2

この場合、Git グラフがどのように表示されるかわかりません。コードを誤って失う前に、助けを求めようと思います。

私は物事を壊すコードをいくつかコミットしたので、以前のコミットをチェックアウトして、何がうまくいかなかったのかを調べました。

commit 87dfs7f6d6fs8 (latest commit on master) 
commit 7fe7f86we6f8d6 <-- checked out this guy

しかし、問題を修正するために再チェックアウトするのを忘れmaster、代わりに detached-HEAD 状態で修正しました。

それで、今、私のGit履歴は次のようになります...(推測)

commit 87dfs7f6d6fs8 (latest commit on master) 

  |--- commit 6f5dsf5d65f <-- New commit (currently checked out)
commit 7fe7f86we6f8d6 <-- checked out this guy

私がやりたいことは、最上位のコミットを完全に取り除き、行った変更を保持することです。reset --hardこれを行うには、現在使用しているコミット ハッシュを作成する必要があると思いますよね?

したがって、次のようになります。

git reset --hard 6f5dsf5d65f

commit 6f5dsf5d65fdetached-HEAD 状態で行ったコミットはどこにありますか。これは正しいですか..?

4

1 に答える 1

3

私がやりたいのは、最上位のコミット [ 87dfs7f6d6fs8] を完全に取り除き、行った変更を保持することです。

私があなたの問題を正しく理解していれば、基本的には

  1. コミットされていない変更 (ある場合) を隠します。
  2. の代わりにコミットするmaster分岐点を作成します。6f5dsf5d65f87dfs7f6d6fs8
  3. スタッシュをポップします (必要な場合)。

を実行して、スタッシュを作成する必要があるかどうかを確認しますgit status。正常に動作していることが示されている場合は、実行します

git checkout master            # important!
git reset --hard 6f5dsf5d65f

それ以外の場合は、実行します

git stash save 
git checkout master            # important!
git reset --hard 6f5dsf5d65f
git stash pop

いずれの場合も、masterリセットする前にチェックアウトする必要があることに注意してください。git resetデタッチヘッド状態で実行すると、移動するだけHEADです。

于 2015-01-11T19:36:08.383 に答える