发生了什么:change1,git commit,git push,change2,git commit
应该发生什么:change1,git commit,git push,change2,git commit --amend
保留 change2 并不重要,但重要的是我能够修改原始提交。我该怎么做呢?
既然你已经推送了它,请注意这很棘手并且你正在改写历史。
您可以git rebase -i
在第一次提交之前选择edit
提交给您的文本中的提交。这样,您将进入您更改/修改的第一个提交状态,然后 git 将对其应用下一个提交。
或者你可以git reset --soft first
去第一次提交并与change2一起修改它。
或者git reset --hard first
去第一次提交并在没有更改的情况下修改它2
[我假设你知道 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