重置而不会丢失已提交的文件

时间:2012-07-14 08:20:49

标签: git git-reset

当我意外地将文件提交到错误的分支时,我通常使用git reset --hard HEAD~1。但是,使用此方法我通常会丢失所有提交的文件。有没有办法重置提交,而不会丢失已编辑的文件?

3 个答案:

答案 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^