gitしぐさ 2017年11月編

最近の git コマンド運用録です。
雑に書いていきます。

前提

リモートレポジトリ戦略

常に以下の状態を維持します。

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です。


なんか他に操作あったっけ……。思い出したら書きます。