Fork me on GitHub

Git リモートブランチの変更

  • Mar 30, 2009

categoryプラグインは存在しません。

環境

概要

Gitはリポジトリが分散しているため、特にブランチの扱い方には注意が必要です。

何も考えずにpullしてしまうと、ローカルリポジトリ上でmasterとのmergeが走ってしまい、意図しない結果になってしまうことがあります。(経験談)

リモートのブランチを変更して、リモートにpushする際の注意点などをメモしておきます。

手順

リモートブランチの作成

  • リモートブランチを作る

リモートリポジトリにブランチを作るには、ローカルのbranchに変更をcommit後、

git push origin remotebranch

とします。

リモートブランチの変更

  • リモートリポジトリをfetchする
git fetch origin

という感じで、ブランチを指定しないでfetchすると、リモートにあるブランチが全て取得されます。

  • ローカルのbranchを確認
git branch -a

とすると、ローカルとリモート全てに存在するブランチが表示されます。

  • 新しいローカルbranchを作って、checkoutする
git checkout -b localbranch origin/remotebranch

という感じにcheckoutすると、リモートブランチを元にローカルで作業が可能なブランチができます。-bを指定しないと編集した結果をcommitできなくなります。

  • 編集結果をcommit
git commit

編集したファイルは普通にcommitします。

  • ワークスペースのbranchを確認
git branch

とすると、現在作業対象にしているbranchが確認できます。branchで作業をしている場合は、どのブランチを対象にしているのかを常に把握しておくことが必要です。

  • リモートにpush
git push origin

こんな感じでbranchへのコミットをリモートのbranchに反映できます。

リモートブランチのローカルへの反映

  • リモートの変更をローカルに反映

2回目以降は作ったbranchにcheckoutで移動した後、pullすればリモートの変更点がローカルリポジトリにmergeされます

git checkout localbranch
git pull origin remotebranch
  • デフォルトのリモートブランチの設定

リモートのブランチ指定を省略したい場合は、

git config --add branch.localbranch.remote origin
git config --add branch.localbranch.merge remotebranch

と設定しておくと、

git pull

のみで対応するリモートbranchの変更点をmergeしてくれるので、間違って意図しないbranchをmergeしてしまうことが少なくなります。

間違えてmergeしてしまった場合

masterをcheckout中にリモートのbranchのpullしてしまうなどした場合、ローカルのリポジトリ上ではmergeが走ってしまいます。こんな場合は慌てずに

git log

して、merge前のバージョンのハッシュ値を調べて、

git reset --hard ID

とすると元に戻せます。

コメント

commentプラグインは存在しません。