彼女からは、おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

Git で新しいリモートブランチをローカルに持ってくるときに git pull してはいけない理由

例えば共同で開発している人が新しいブランチ「new-branch」をつくって、リモートリポジトリに プッシュしました。

その新しいブランチを自分のローカルに持ってくるときに

|git| $ git pull origin new-branch:new-branch ||<

とするのは、危険です。大抵の場合、意図していない結果を生みます、という話。

*git pull は現在のブランチにマージされる

なぜ危険かというと、例えば上の例では、new-branch の内容が、現在いるローカルブランチにマージされるからです。master ブランチにいたとすると、master ブランチにマージされます。こわいですね。

大抵の場合は、ただ単に新しいリモートブランチを自分のローカルに持ってきたいだけで、他の既存のブランチにマージすることまでは意図していないはず(ですよね?)

*正しいコマンド

単に新しいリモートブランチを自分のローカルに持ってくるのであれば、下記のようにするのが正しいです。

|git| $ git branch new-branch origin/new-branch ||<

「git branch」コマンドに第2引数を与えると、それを起点にしたブランチがつくられます。

**(2012年8月31日 追記

下記のようにすると、新しいブランチを作成し、さらに作成したブランチにチェックアウトできます。

|| $ git checkout -b new-branch origin/new-branch ||< <<

*git pull の詳細な挙動

git pull の詳細な挙動については、下記でまとめられていますので、興味がある方は参考にしてみてください。

-git pullの詳細な挙動を追ってみる - hokaccha.hamalog v2

ではでは。