QA@IT

git で直前にいたブランチとの行き来を簡単に行うには?

4319 PV

git で直前にいたブランチと、かんたんに行き来するにはどうすればよいのでしょうか。たとえば、以下の操作のあと、

git checkout foo
git checkout bar

foo ブランチに一発で移動したり、さらにそのあと、同じコマンド(オプション)で bar ブランチに戻ってきたりといったことがしたいです。「ブランチ」を「ディレクトリ」に置き換えるなら "cd -" のようなイメージです。git checkout の履歴または、直前の git checkout を保持する方法がわかならかったため、質問しました。シェルは bash を使っています。現在は readline の history-search-backward を使っています。

回答

ブランチ名“-”でどうでしょう。

git checkout -

git checkout以外の、git mergeなどでも使えます。

編集 履歴 (0)
  • あ、これです。ハイフンはさすがですね。ありがとうございました。 -

こんな感じでどうでしょうか?

$ git checkout foo
Switched to branch 'foo'
$ git checkout bar
Switched to branch 'bar'
$ git checkout $(git name-rev --name-only HEAD@{1})
Switched to branch 'foo'
$ git branch
  bar
* foo
  master

ただし、この方法だと foo と同じ位置に別のブランチがあるとどっちのブランチがチェックアウトされるかが不定です(コミットからブランチを得ているので、同じコミットを指すブランチが複数あるとどちらのブランチが得られるか判らない)。

編集 履歴 (0)
  • うまくゆきました。emasaka さんの回答 "git checkout -" の方がシンプルなのでそちらを使いますが、回答をいただけてうれしいです。ありがとうございました。 -
  • よく考えるとこの方法は `git checkout bar` の後に commit が入っただけでダメでした。。。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。