以前のバージョンのコードをチェックアウトして調べたりテストしたりすることがあります。以前のコミットを変更したい場合はどうすればよいかについての説明を見ましたが、変更を加えないとします。たとえばgit checkout HEAD^
、を実行した後、ブランチの先端に戻るにはどうすればよいですか?.. git log
は、最新のコミットのSHAを表示しなくなりました。
以前のバージョンのコードをチェックアウトして調べたりテストしたりすることがあります。以前のコミットを変更したい場合はどうすればよいかについての説明を見ましたが、変更を加えないとします。たとえばgit checkout HEAD^
、を実行した後、ブランチの先端に戻るにはどうすればよいですか?.. git log
は、最新のコミットのSHAを表示しなくなりました。
回答:
戻りたいコミットがブランチの先頭であるか、タグ付けされていることがわかっている場合は、
git checkout branchname
を使用git reflog
して、HEAD(またはその他の参照)が過去に指し示した他のコミットを確認することもできます。
追加するように編集:
Gitの新しいバージョンではgit checkout
、HEAD
一度だけ実行するために実行したり、何か他のものを実行したりする場合も、
git checkout -
最後のチェックアウト前の場所に切り替えます。これは、シェルのイディオムcd -
に例えると、以前にあった作業ディレクトリに戻るように動機付けられました。
master
実際にはどのようなキーワードでもありませんHEAD
。これは、新しいリポジトリのデフォルトのブランチ名にすぎません。実行git branch
して、リポジトリ内のブランチのリストを取得し、git tag -l
タグのリストを取得できます。同様に、origin
はリポジトリのクローン元であるリモートのデフォルト名ですが、特別なことは何もありません。
git reflog
、ハッシュのリストが表示され、その時点でを使用できますgit checkout [commit-hash]
。
たった今この質問に出くわして、何か追加する必要があります
最新のコミットに移動するには:
git checkout $(git log --branches -1 --pretty=format:"%H")
説明:
git log --branches
すべてのローカルブランチからのコミットのログ
-1
を1つのコミットに制限して表示→ チェックアウトの引数としてサブシェルの出力を使用
--pretty=format:"%H"
するコミットハッシュのみを表示する最新のコミット形式
git checkout $(...)
注意:
ただし、これによりヘッドが分離されます(コミットに直接チェックアウトするため)。これはsed
、以下で説明するように、を使用してブランチ名を抽出することで回避できます。
最新のコミットのブランチに移動するには:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
説明:
git log --branches
すべてのローカルブランチからのコミットのログ
-1
を1つのコミットに制限して表示→
--pretty=format:"%D"
参照名のみを表示する最新のコミット形式
| sed 's/.*, //g'
複数の参照の最後を除くすべてを無視(*)
git checkout $(...)
チェックアウトの引数としてサブシェルの出力を使用
*)HEADとリモートブランチが最初にリストされ、ローカルブランチがアルファベット順に降順で最後にリストされるため、残りのブランチはアルファベット順で最初のブランチ名になります
注意:
これは常に、そのコミットに複数ある場合にのみ、(アルファベット順で)最初のブランチ名のみを使用します。
とにかく、最善の解決策は、最新のコミットの参照名を表示して、どこにチェックアウトするかを知ることだと思います。
git log --branches -1 --pretty=format:'%D'
たとえばgit top
、そのコマンドのエイリアスを作成します。
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
グラフィカルなGUIを見てください... gitk
すべてのコミットが表示されます。時にはグラフィカルに作業する方が簡単です... ^^
これには、次のいずれかのgitコマンドを使用できます。
git checkout master
git checkout branchname
すべてのブランチを表示し、git log --branches --onelineをコミットし
ます
最後のコミットを表示
git log --branches -1 --oneline
最後のコミットの前に表示
git log --branches -2 --oneline
簡単にできますgit pull origin branchname
。最新のコミットを再度フェッチします。
git log
質問の文については、いつでも実行できますgit log --all
(より便利には、git log --oneline --graph --all
)。