/ 最近 .rdf 追記 編集 設定 本棚

脳log[20210507]



2021年05月07日 (金) [Git] 「これは神! GitHubが、クリックするだけで親リポジトリと同期できるようになったらしい!」■しかしですね、こういうひねくれ者もおります。「自分の GitHub リポジトリにコピーブランチはいらない。ローカルの作業リポジトリで git fetch --all して <remote>/master などと参照すればよい。」■「マンガでわかるGit 12話「本家リポジトリに追従する方法」 | リクナビNEXTジャーナル」にある「最後にプッシュして完了」の手順が必要ですか、っていう話。それをしないとできない操作は何ですか、っていう。■■■たぶん基本的な考えとして、ブランチ作成/プッシュ/プルを GitHub の自分が所有するフォークリポジトリに対してのみ行うというフローが想定されているのではないか。つまりローカルリポジトリは自分が所有するフォークリポジトリのクローンとして作成し、origin (フォーク。自分の GitHub リポジトリ)を起点に作業をする。にも関わらずこれまでは本家リポジトリに追随するという目的のために、ローカルリポジトリから本家リポジトリを参照する必要があった。今回の GitHub のアップデートによりローカルと本家の繋がりを断つことができ、origin を中心とした作業フローがより完全なものになるとか?■自分は git checkout -b myBranch 本家/mastergit push -u myGitHubRepo myBranchgit rebase 本家/master [myBranch] というフローで作業をするために、「自分のではないリモートリポジトリへのプッシュをできなくする」「新しく作成したブランチが自動的に設定する、分岐元との繋がりを断つ(--no-track を既定値にする)」という下準備をローカルリポジトリで行っていた。そもそも「(クローンしたなら)リモート名 origin を削除する。余計な自動化も自分が管理しない名前もない方がまし」という考えによってリモート名 origin が存在しなかった。■だって origin ってリポジトリ名なの? ブランチ名なの? 本家なの? フォークなの? そういう曖昧なものの上で作業をしたくない。ましてそれ(origin)が他人(git)のお膳立てなら、助けではなく余分な複雑さを持ち込むようにしか思えない。定型のタイプの繰り返しに倦んできた頃に提案してくれたなら考えないこともない……かな? それでもやっぱり自分は pull は使わないので(許容できるのは checkout や add までであって、自動で merge/rebase は乱暴だ)、origin もいらないんだよな(本家リポジトリにはその代わりにわかりやすい名前を付けます。「ブランチ名とひと目で区別できるように、リモート名は @ を付けたり大文字にしたりしようかな」)。■自分にとって3つのリポジトリの関係は「本家―ローカル―フォーク」として捉えられている。でもひょっとしたら「本家―フォーク―ローカル」の想定もあるのかもな、と考えてみた次第。でも自分で GitHub にフォークリポジトリを持たなくても「本家―ローカル(フォーク)」の2者間でもフォークは成り立つので、中心に GitHub 上のフォークリポジトリを置くのは、GitHub の中の人の立場としてならともかく、個人としては順序が違うと思う。メンタルモデルはひとつで十分だ。そのとき GitHub 上のフォークリポジトリは3番目に位置するオプショナルな存在となる(だから意識しなければこれを忘れる>「フォークする。プルリクエストを出すためには GitHub 上でフォークしたという事実が大事」 新規作成した空のリポジトリにプッシュしても PR は出せないのである)。■しかし GitHub のアップデートによって今後は、GitHub と origin を必須の前提として作業フローからリモートの区別・存在感を消すのがある種最適な選択になるのかもね。本家とフォークの2つのリモート名を使い分ける必要がなくなるのなら、単純化がなされるのなら、割り切りによる制約がむしろメリットと感じられる人もいるだろう。さもなければ無駄に複雑化して面倒なことをしているなと自分は思います。