マージに躓く:Already up-to-date.の怪

とあるプログラムを開発していました。masterブランチで、です。これにbootstrapを導入することになったため、bootstrapというブランチを自分のサーバ作成してそこで作業していました。もちろん、bootstrapはリモートにpushしています。

さて、bootstrapブランチでの作業が完了したので、masterbootstrapの内容をマージする必要がでてきます。

私はここで、自分のサーバではない、別のサーバにログインしました(ここがポイント) このサーバはすでにmasterが展開されています。

そこで、次のコマンドを打ちました:

$ git checkout bootstrap

Branch bootstrap set up to track remote branch bootstrap from origin.
Switched to a new branch 'bootstrap'

$ git merge bootstrap

Already up-to-date.

Already up-to-dateとは?、マージ対象がない? しかしよく考えてみたら、このサーバは僕がbootstrapを開発していたサーバではなく別のサーバ。 リモートからfetchしてないのでbootstrapブランチの中身が空なんですよね。

そこで次に、こうしました:

$ git checkout bootstrap
$ git fetch
$ git checkout master
$ git merge --no-ff bootstrap

これで無事に、bootstrapブランチの中身をmasterに取り込めました。

もし、自分のサーバですべての作業を行っていたらgit fetchが不要でした。