我不知道在这种情况下 Git 图表是什么样子,所以在我不小心丢失任何代码之前,我想我会寻求帮助。
我提交了一些破坏了东西的代码,所以我检查了之前的提交来看看出了什么问题。
commit 87dfs7f6d6fs8 (latest commit on master)
commit 7fe7f86we6f8d6 <-- checked out this guy
但是,我忘记重新 checkout 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.
如果我正确理解你的问题,你基本上需要
- stash 未提交的更改(如果有),
- 使
master
分支指向提交6f5dsf5d65f
而不是87dfs7f6d6fs8
, - pop 储藏室(如有必要)。
检查是否需要通过运行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
。
关于git - 如何将我的分支重置为我在分离 HEAD 模式下创建的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27891173/