私はgitにcd -
と同等のものが欲しいのです。私がブランチmaster
にいて、foo
をチェックアウトした場合、master
に戻るためにgit checkout -
のようなものを入力し、foo
に戻るためにそれを再度入力できるようにしたいと思います。
こんなものはありますか?実装するのは難しいですか?
1.6.2の リリースノートから
@{-1}
はあなたが最後にいたブランチを参照する方法です。これは
は、オブジェクト名が想定される場所だけでなく、ブランチ名が想定される場所でも受け入れられ、ブランチ名を入力した場合と同じように機能します。
例えば。git branch --track mybranch @{-1}
、git merge @{-1}
、git rev-parse --symbolic-full-name @{-1}
は期待通りに動作します。
そして
git checkout -
はgit checkout @{-1}
の省略形です。
今日これをする最も簡単な方法は:
git checkout -
...これは:の別名です。
git checkout @{-1}
あなたがこれについてもっと知りたいのであれば、私はここでそれについての全体の記事を書きました: Gitの前のブランチをチェックアウトしてください 。
@Karlがgit checkout
マニュアルから指摘しているように、
特別な場合として、最後のN番目のブランチに対する "@ { - N}"構文は、(デタッチの代わりに)そのブランチをチェックアウトします。 - を指定することもできます - これは "@ { - 1}"と同義です。
そのため、この場合はgit checkout -
とgit checkout @{-1}
の両方が機能します。
私はgit reflog
を使っていて、最新のmoving from branch1 to branch2
とgit checkout branch1
を解析していると私は考えています。
git checkout @{-N}
が機能するメカニズムを理解するために、以前の回答にもう少し詳細を追加してください。 reflogを調べてチェックアウト履歴を調べるので、自分で似たようなものを実装したい場合はgit reflog
の出力を解析してcheckout:
行を探すことができるはずです。 gitのソースsha1_name.c
、特に関数interpret_nth_prior_checkout
で実装をチェックすることができます。
私は前のブランチをチェックアウトするために同じ考えでこの質問に行きました。 Mac
で ohmyz を使っています。以下のコマンドは私を助けました。
$ gco -
$ git checkout -
以下は、他の回答で提供されたgit checkout -
およびgit checkout @{-1}
ソリューションを説明するGitのドキュメントの一部へのポインターです。
任意のコマンドにGitリビジョンを指定する場合、 @{-<n>}
、たとえば@{-1}
は「n番目のブランチ/コミットは、現在のブランチ/コミットの前にチェックアウトされています。 git checkout <branch>
のドキュメントは繰り返します:「@{-N}
構文を使用して、最後にチェックされたN番目のブランチ/コミットgit checkout
操作を使用して出力します。」
<branch>
の引数git checkout
については、「「-
」も指定できます。これは「@{-1}
」と同義です。」
最も人気のある解決策は以下のとおりです。
git checkout @{-N}
N - 支店の歩数がチェックアウト履歴に戻ります。
Gitバージョン2.23
にはgit switch
コマンドが導入されており、これを使用して(以上)実行できます。公式ドキュメントを引用:
指定されたブランチに切り替えます。作業ツリーとインデックスは、ブランチに一致するように更新されます。すべての新しいコミットは、このブランチの先端に追加されます。
特定のケースでは、git switch -
を発行して、前にいたブランチに戻ることができます。同じコマンドを再度実行して、最初のブランチに戻ることができます。
追伸まだその方法がわからないわけではありません(この質問をしてから7年が経ちました)が、このコマンドは一般的な 混乱git checkout
を使用すると発生します。