gitしぐさ 2017年11月編
最近の git コマンド運用録です。
雑に書いていきます。
前提
- GitHub
- git
- hub
- tig
リモートレポジトリ戦略
常に以下の状態を維持します。
upstream: みんなの更新が集まってくるところ
origin: 自分の変更をいれるところ
なので例えば ruby/ruby のようなOSSだと fork 前提なのでこうなります。
upstream: git@github.com:ruby/ruby.git
origin: git@github.com:hkdnet/ruby.git
あるいは自分しか使わないプロジェクトだとforkできない(する意味もない)ので upstream と origin が一致します。
upstream: git@github.com:hkdnet/stdlinux.git
origin: git@github.com:hkdnet/stdlinux.git
一見無駄ですが、どのようなプロジェクトだろうと全く同じ操作ができるというのが強みです。
upstream から更新をとってくる
git fetch upstream
でおk
ローカルで作業を始める
git checkout -b branch_name upstream/master
upstream/master
からブランチを切ります。
ローカルレポジトリのmasterは存在する意味がないので強い気持ちで消しましょう。
ブランチ切るときは上記のでいいし、ローカルで最新版を見たいときも git checkout upstream/master
で十分です。
pr出す前に upstream/master に更新がはいった
git fetch upstream
はもちろんしてあるものとして、 git rebase upstream/master
でおkです。
ちゃんとこまめにやってればそんなにコンフリクトしないでしょう。
したとしても気合で解決を試みて、ダメなら git rebase --abort
でやめればいいので気軽にやっています。
pushする
git push origin head
です。
headは現在のブランチ名として解釈されるのでどんなブランチ名のときもこれでおkです。
なんか他に操作あったっけ……。思い出したら書きます。