はじめに
git merge
は、コミットメッセージが作られるので履歴が汚い
git pull
は、Gitがよしなにマージするので意図しないマージが発生する時がある
ことから、pullとmergeは使わずにできるだけgit fetch
とgit rebase
に統一するようになった。
git pullの代替コマンド
ターミナル
$ git fetch origin ←リモートの情報をoriginにダウンロード
$ git checkout ブランチ名
$ git rebase origin/ブランチ名 ←ダウンロードした情報を反映
fetchとcheckoutの順番はどっちでも良い。
git mergeの代替コマンド
例えばmasterブランチの差分を取り入れたい場合
$ git fetch origin ←リモートの情報をoriginにダウンロード
$ git checkout ブランチ名
$ git rebase origin/master ←ダウンロードしたmasterの情報を取り入れる
こちらもfetchとcheckoutの順番はどっちでも良い。
rebase -iでは色々なことができる
例えばgit rebase -i HEAD~3
とすると、デフォルトのエディタが開き以下の表示になる。
ターミナル
pick コミットID① コミットメッセージ①
pick コミットID② コミットメッセージ②
pick コミットID③ コミットメッセージ③
コマンドの説明...
これを編集して
pick コミットID① コミットメッセージ①
pick コミットID③ コミットメッセージ③
コマンドの説明...
として保存&終了すると、コミットID②のコミットが消える。
git log
で確認してみてください。
上記以外にも、コミットメッセージを変更したりコミットをsquash(まとめる)こともできる。
git rebase iなどでググってみると良い。