如何将我的分支重置为我在分离 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.
如果我正确理解你的问题,你基本上需要
- 隐藏未提交的更改(如果有),
- 使
master
分支指向提交 6f5dsf5d65f
而不是 87dfs7f6d6fs8
,
- 弹出藏匿处(如有必要)。
通过运行宁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
.
我不知道 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.
如果我正确理解你的问题,你基本上需要
- 隐藏未提交的更改(如果有),
- 使
master
分支指向提交6f5dsf5d65f
而不是87dfs7f6d6fs8
, - 弹出藏匿处(如有必要)。
通过运行宁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
.