当我不小心将文件提交到错误的分支时,我通常使用git reset --hard HEAD~1
. 但是,使用这种方法我通常会丢失所有提交的文件。有没有办法在不丢失编辑文件的情况下重置提交?
问问题
20385 次
3 回答
49
不要使用--hard
use--soft
代替。
因此,如果您想删除最新的提交,您可以这样做:
git reset --soft HEAD^
于 2012-07-14T08:23:42.397 回答
5
虽然亚历克斯非常正确,但我可能想尝试不同的顺序:
如果我想在尚未诞生的分支上提交:
git branch newbranch
git reset --hard HEAD^
如果我想在现有分支上提交:
git checkout otherbranch
git cherry-pick firstbranch
git checkout firstbranch
git reset --hard HEAD^
亚历克斯答案的完整示例
git reset --soft HEAD^
git checkout otherbranch
git commit -am "Message"
请注意,如果尝试将更改“浮动”到另一个分支的尝试由于冲突而失败,则最后一个示例将失败。然后,您将需要存储/结帐/申请以解决冲突。
于 2012-07-14T09:57:39.170 回答
2
就我而言--mixed
,在我找到这个简单的解释之后,我更喜欢使用
git reset --mixed HEAD^
于 2019-10-15T06:02:56.260 回答