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

4

1 回答 1

3

我想做的是完全摆脱最顶层的提交 [ 87dfs7f6d6fs8] 并保留我所做的更改。

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

  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然后才能重置;在 detached-HEAD 状态下运行git reset只会移动HEAD.

于 2015-01-11T19:36:08.383 回答