如何将我的分支重置为我在分离 HEAD 模式下创建的提交?

How can I reset my branch to a commit I created while in detached-HEAD mode?

我不知道 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 6f5dsf5d65f 是我在 detached-HEAD 状态下所做的提交。这是正确的吗..?

What I'd like to do is completely get rid of the topmost commit [87dfs7f6d6fs8] and keep the changes that I made.

如果我正确理解你的问题,你基本上需要

  1. 隐藏未提交的更改(如果有),
  2. 使 master 分支指向提交 6f5dsf5d65f 而不是 87dfs7f6d6fs8,
  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.