24

当我不小心将文件提交到错误的分支时,我通常使用git reset --hard HEAD~1. 但是,使用这种方法我通常会丢失所有提交的文件。有没有办法在不丢失编辑文件的情况下重置提交?

4

3 回答 3

49

不要使用--harduse--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 回答