我不知道Git图在这个例子中是什么样的,所以在我意外丢失任何代码之前,我想我会寻求帮助。
我提交了一些破坏内容的代码,所以我查看了之前的提交,看看出了什么问题。
commit 87dfs7f6d6fs8 (latest commit on master)
commit 7fe7f86we6f8d6 <-- checked out this guy
但是,我忘了重新检查master
来解决问题,而是将其修复为分离-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
是我在分离-HEAD状态下所做的提交。这是正确的吗..?
答案 0 :(得分:3)
我想做的就是完全摆脱最顶层的提交[
87dfs7f6d6fs8
]并保留我所做的更改。
如果我理解你的问题,你基本上需要
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
,然后才能重置它;处于分离-HEAD状态时运行git reset
只会移动HEAD
。