web-dev-qa-db-ja.com

SourceTreeの前のコミットに戻る

私はGitを初めて使用し、SourceTreeで以前のコミットに戻ろうとしていました。元に戻す予定のコミットを右クリックしてから、[チェックアウト]をクリックしました。それは私に私の作業コピーが切り離された頭になるだろうというプロンプトを与えました。これはどういう意味ですか、これは私が避けるべきものですか?

4
Nikhil Sridhar

Git-Towerの記事によると: Gitの「切り離されたHEAD」とは何ですか?

「チェックアウト」の仕組みを理解する

「gitcheckout」コマンドを使用して、作業するプロジェクトのリビジョンを決定します。次に、Gitはそのリビジョンのすべてのファイルを作業コピーフォルダーに配置します。

通常、ブランチ名を使用して「gitcheckout」と通信します

$ git checkout development

ただし、代わりに特定のコミットのSHA1ハッシュを提供することもできます。

$ git checkout 56a4e5c08
Note: checking out '56a4e5c08'.

You are in 'detached HEAD' state...

この正確な状態(ブランチではなく特定のコミットがチェックアウトされたとき)は、切り離されたHEADと呼ばれるものです。

enter image description here

HEADの切り離しの問題

GitのHEADポインターは、現在の作業リビジョン(および、プロジェクトの作業ディレクトリに配置されるファイル)を決定します。通常、適切なブランチ名をチェックアウトするとき、Gitは新しいコミットを作成するときにHEADポインターを自動的に移動します。選択したブランチの最新のコミットに自動的に移動します。

代わりにコミットハッシュをチェックアウトすることを選択した場合、Gitはこれを行いません。その結果、変更を加えてコミットすると、これらの変更はどのブランチにも属しません。これは、別のリビジョンまたはブランチをチェックアウトすると、簡単に失われる可能性があることを意味します。ブランチのコンテキストで記録されていないため、その状態に簡単にアクセスする可能性がありません(素晴らしいメモリがあり、のコミットハッシュを覚えている場合を除く)その新しいコミット...)。

概要:SourceTreeから、特定のコミットにチェックアウトするのではなく、特定のブランチにチェックアウトしてください。

4
LuFFy

この問題はgitに正確に関連しているわけではないようですが、使用しているgitクライアント/プロバイダーに固有です(ビットバケットだと思います)。

Gitをよりよく学ぶために、WebUIの代わりにコマンドラインクライアントを使用することをお勧めします。

デタッチドヘッド状態では、行った(およびコミットした)変更はすべてコミットツリーからデタッチされ、そのコミットをコミットツリーに戻すには追加の作業が必要です。通常、切り離されたヘッドの状態は変更せず、コミットツリーを再配置するために使用されます。しかし、切り離された状態で実験する価値があります。

0