それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

gitでリモートブランチをローカルブランチにチェックアウトする。(githubプルリクを手元にコピー

リモートにあるブランチをローカルに持って来たい

たとえば、github のプルリクなど、リモートのgit branch から自分の手元に、同じものを取り出したいときがあります。

git のリモートブランチを確認します。

git branch -a | \grep remote

たとえば、次のようにほしいブランチ名を確認します。

takuya@i$ git branch -a | \grep remote  | grep add
  remotes/origin/add_table_column
  remotes/origin/add_notify
  remotes/origin/createAddUpdateModel

これで、必要なリモートブランチ名を確認出来ました。github のプルリクをブランチベースでやっていると、プルリクに表示されてます。

git のリモートブランチが見つからない場合、

リモートブランチの名前が見つからないときは、次のように fetch します。

git fetch 

リモートブランチの名前が見つからないなんて、そんなことを起きるの?と疑問を感じるかもしれません。リモートブランチはfetch しない限り出てきません。gitは分散レポジトリなのでリモートブランチの更新を取り出す必要があります。

ローカルブランチ名を指定して、リモートブランチをコピー・チェックアウトします。

次のように、リモートブランチを取り出し、ローカルブランチの名前を付けます。別の名前も可能ですが、同じ名前にしておくのが無難だと思います。

takuya@$ git checkout -b  add_notify origin/add_notify

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

これで、リモートブランチをローカルに取り出してソースコードを見ながら、実験できますね。

同じ名前を使うのであれば、次のように省略することも可能です。

git checkout -b origin/add_notify

というか、省略した此方を一般的に記事で紹介されるのではないでしょうか。ただこちらはローカルとリモートの対応がわかりづらく、ミスを誘発しやすいので最初は localと remote origin の両方を指定したほうがいいのかもしれません

さらなる短縮化が出来て

もちろん、さらなる短縮化が出来て、無意識のうちにこれを使ってる可能性があります。私もこれです。

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

checkout のメッセージをよく読むと、
remote branch の add_notice が origin にあるのでそこから、追跡してブランチをセットアップするよ。(Branch 'add_notice' set up to track remote branch 'add_notice' from 'origin'.) と書いてありますね。つまり、このメッセージが出てきたらOK、省略したcheckout でもちゃんとoriginから取り出せたことが解るようです。

参考資料

Git - リモートブランチ