【发布时间】:2011-09-28 21:52:20
【问题描述】:
发生了什么: 改变1, git提交, git推送, 改变2, git提交
应该发生的事情: 改变1, git提交, git推送, 改变2, git commit --amend
我保留 change2 并不重要,但重要的是我能够修改原始提交。我该怎么做?
【问题讨论】:
发生了什么: 改变1, git提交, git推送, 改变2, git提交
应该发生的事情: 改变1, git提交, git推送, 改变2, 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
【讨论】: