1

bug-fix別の枝から切り取られた枝がありましたdevelop

bug-fixからの変更をにマージした後、developgithub を介してブランチを削除しましたが、削除したときにまだブランチにチェックインされていたと思います。

ブランチには追跡されていないファイルも1つありましたbug-fix

おそらく削除された後、bug-fixチェックアウトしdevelopて見ましたHEAD detached at develop

切り離された頭を修正するために私が試みたすべては次のとおりです。

1)まず、bug-fix削除されてgithubに表示されなくなったブランチが、実行するとまだ表示されるgit branch のでgit fetch、更新してみました。まだまだ登場

2) 追跡されていないファイルをチェックアウトしbug-fixて削除しました

3)新しいブランチtempを作成してから削除しようとしました

4

1 に答える 1

6

リテラル テキスト文字列が表示された場合:

HEAD detached at develop

(例:git status出力)、これは nameがbranchdevelopではないことを意味します。(より正確には、これはブランチ名ではありません。Git では、「ブランチ」という用語はあいまいです。「ブランチ」とは正確には何を意味するのでしょうか? を参照してください) 。

たとえば、この Git の Git リポジトリで次のコマンドを実行すると、

$ git checkout v2.10.0
Note: checking out 'v2.10.0'.
[snip]
HEAD is now at 6ebdac1... Git 2.10
$ git status
HEAD detached at v2.10.0
nothing to commit, working tree clean

これは、名前v2.10.0がブランチではなくタグであるためです。

master(ブランチ名です)に戻るには、次のようにします。

$ git checkout master
Previous HEAD position was 6ebdac1... Git 2.10
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

Git のブランチ名は、長い目で見ればそれほど重要ではありません。短期的には (作業中)、それら重要で便利ですが、最終的には likefix-bug-1234またはtest-new-featureどちらかのブランチがうまくいき、長期にわたる開発またはリリース ブランチに組み込まれて削除されるか、またはそうであることが判明します。失敗し、完全に削除されるか、「マージを無視」して行き止まりとして終了し、その名前が削除されます。

重要なのはコミットです

Git では、本当に重要なのはコミット自体だけです。

ブランチ名は、単にコミットを見つける方法として機能します。タグ名も同様です。それぞれの名前により、Git は1 つのコミットを見つけることができます (名前には大きな醜いハッシュが格納されます) 6ebdac1...。コミット自体により、Git は以前のコミットを見つけることができます。

ブランチ名とタグ名の主な違いは、ブランチ名は移動するはずであり、実際、ブランチで新しいコミットを行うと自動的に移動することです。そのために、ブランチを「オン」にして、実行時にブランチを移動することを Git が認識できるようにします。git checkout branch-namegit commit

他の名前は、Git はほとんどの場合、生のハッシュ ID の名前として扱います。これらにより、「切り離されたHEAD」が得られます。目的git statusのために、Git は、この「切り離された HEAD」状態に入るために使用した名前を記憶しようとします。しかし、本当に重要なのは ID です。

ブランチ名を削除すると、コミット自体はしばらく (通常は少なくとも 30 日間) 残ります。それらの ID は、Git の「reflogs」で見つけることができます。git reflog実行すると、検索するのが難しい大量のものが取得されるため、これは一種のお尻の痛みです。しかし、コミットはまだそこにあります。気になるものを見つけて (たとえば、git show 08bb350commit を参照するために使用します08bb350)、それらを「復活」させるだけです。

$ git branch zombie 08bb350

たとえば、ブランチとして戻したいコミットが08bb350.

于 2016-11-01T23:49:22.080 に答える