garasubo's note

(´・ω・`)

Git Pullをrebaseで行う

| Comments

複数人でリモートのレポジトリをいじるとリモートの変更を git pullでひっぱって来ないといけないわけだが、 git pullはremoteの変更をgit fetchして取ってきてから、 その変更を自分の追跡ブランチにmergeをするということをしている。
そのため、場合によっては無駄にマージコミットができてしまい、気が分岐しているように見えて、 ログの参照性をさげてしまう。
そこでpull時にmergeの代わりにrebaseを使い、そのようなことを避けるオプションがある。

git pull --rebase

見えないチカラ: 【翻訳】あなたの知らないGit Tipsによると、

git config --global pull.rebase true

としてあげると全追跡ブランチでpull時はオプション無しでrebaseを使うようになる。(Git 1.7.9から)

ただし、rebaseでpullしてくると

1. 追跡ブランチからブランチを切る
2. そのブランチに対して追跡ブランチにマージコミットを打つ(その間、追跡ブランチには何もコミットしていない)
3. 追跡ブランチでpull

とすると、マージコミットが消えて、その追跡ブランチからブランチを切ったという情報が消えてしまった。
これはマージコミットをリバートするときはどちらを残すか明示的に指定しないといけないように、 どちらが本来の流れか分からなくなるからか?
にわかだからよくわかりません><

Comments