当我意外地将文件提交到错误的分支时,我通常使用git reset --hard HEAD~1
。但是,使用此方法我通常会丢失所有提交的文件。有没有办法重置提交,而不会丢失已编辑的文件?
答案 0 :(得分:35)
请勿使用--hard
代替--soft
。
因此,如果您要删除最新的提交,请执行以下操作:
git reset --soft HEAD^
答案 1 :(得分:5)
虽然Alex非常正确,但我可能会尝试尝试不同的序列:
如果我想在一个尚未出生的分支上提交:
git branch newbranch
git reset --hard HEAD^
如果我想在现有分支上提交:
git checkout otherbranch
git cherry-pick firstbranch
git checkout firstbranch
git reset --hard HEAD^
Alex的回答的完整例子
git reset --soft HEAD^
git checkout otherbranch
git commit -am "Message"
注意,如果由于冲突而将更改“浮动”到另一个分支的尝试失败,则最后一个示例将失败。然后,您需要存储/结帐/申请以解决冲突。
答案 2 :(得分:0)
对于我的情况,我更喜欢在发现this simple explanation后使用--mixed
git reset --mixed HEAD^