Removing a commit with git
Possible Duplicate:
How to delete a 'git commit'
号
我刚加入Git,遇到了一个需要帮助的情况。我克隆了一个远程存储库到我的个人电脑上,然后打开了一个新的分支"meir"。
出于实践目的,我首先提交了一些我在文件上所做的更改。之后,我按照我希望的方式更改了文件,并再次提交。然后我将本地分支推送到远程存储库。
问题是我有第一个提交,这是一个测试,我不希望它在远程服务器上。我想了两种可能的解决方法:
我需要运行什么命令来实现每个选项?
谢谢,梅尔
一般来说,在推送到远程存储库中的公共分支之后,不应该更改提交历史记录。它会给从远程存储库中提取/克隆的人带来痛苦。
但如果你真的想这样做,你可以使用交互式的钢筋网和强制推送:
另一种选择是使用
有多种方法可以做到这一点,但是没有一种是推荐的所以,使用它们的风险由你自己承担。
推动其中一项承诺
使用REBASE
如果您有两个承诺,希望只推动其中一个,这不是最新的一个。
这样,只会推送对应于第二个提交ID的更改,而不会推送您最近的提交。
但是,如果必须推送最新的提交,而不是第二次提交,则必须先反向提交
在打开的编辑器中,您应该看到两行代表您的提交53259B225和227552392,类似于
选择227552392 blah blah选择53259B225 blah blah
重新排列这两行,使其看起来像
选择53259B225 blah blah选择227552392 blah blah
然后保存文件。
通过这一点,您基本上改变了提交的顺序。如果在两个提交中处理不同的文件集,那么这将是一个相对简单的过程。如果没有,那么您可能需要进行一些合并。
如果在任何时候,如果你认为你搞砸了,那么你可以发出命令
使用壁球
如您所见,这还可以用于将少量提交合并为一个提交。