git:摆脱以前的提交,以便你可以修改之前的提交

时间:2011-09-28 21:52:20

标签: git amend

发生了什么: CHANGE1, git commit, git push, change2, git commit

应该发生什么: CHANGE1, git commit, git push, change2, git commit - 修改

保留change2并不重要,但重要的是我能够修改原始提交。我该怎么做?

2 个答案:

答案 0 :(得分:1)

既然你已经推了它,请注意这很棘手并且你正在重写历史。

您可以在第一次提交之前git rebase -i,并在提交给您的文本中为提交选择edit。这样,您将进入第一个提交状态,您将更改/修改,然后git将对其应用下一个提交。

或者您可以git reset --soft first首先提交并与change2一起修改。

git reset --hard first转到第一次提交并在没有更改2的情况下进行修改

答案 1 :(得分:0)

[我假设你知道Linus认为这是邪恶的]

$ git reset --hard HEAD^  # remove last commit
$ git commit --amend
$ git push --force <remote> <branch>

如果您希望之后应用最后一次提交,请执行

$ SHA1=`git rev-parse master`
$ git branch temp
# now the three commands above
$ git cherry-pick $SHA1
$ git branch -d temp