我怎样才能删除提交给git
这个问题在这里已经有了答案:
我将阐述所有不同的方式来为您删除提交,以及何时应该使用它们。 在你做任何这些之前,我强烈建议你将分支复制到另一个分支以保证安全。
通过执行git checkout -b copy_branch
来完成此git checkout -b copy_branch
,然后通过执行git checkout -b copy_branch
切换回原始分支git checkout the_branch_i_want_to_delete_from_again
如果你已经推动了,就像你的情况一样,你可以跳到#3,但是如果你没有推动,你可以看看1和2。
1)我还没有推或者正在单独工作,我想删除的提交是最近的提交:
如果我有:A --- B --- C --- D
我想删除C和D.
然后做git reset --hard sha_of_B
其结果是:A --- B
如果你已经推出了,就像你的情况一样,你仍然可以这样做,然后做一个git push --force origin the_branch
,但不建议这样做,因为你可能会让其他人搞砸这个项目。 你应该按照#3代替。
2)我还没有推或者正在单独工作,我想移除的提交在我的分支中:
如果我有:A --- B --- C --- D
我想要删除C.
git rebase -i sha_of_B_the_commit_before_the_one_i_want_to_delete
这打开了非常有用的交互式底图屏幕:
pick sha_of_C C
pick sha_of_D D
因为git提示你“#如果你在这里删除一行,那么这个提交将会丢失。” 这就是我们要做的。
我删除了行pick sha_of_C C
,这留给我:
pick sha_of_D D
我用vi保存在vi中,结果如下:
A --- ---乙d
如果你已经推出了,就像你的情况一样,你仍然可以这样做,然后做一个git push --force origin the_branch
,但不建议这样做,因为你可能会让其他人搞砸这个项目。 你应该按照#3代替。
3)我已经推动,我正在与其他人一起工作:
如果我有:A --- B --- C --- D,我想删除C和D.
然后做
git revert sha_of_D
请注意,您可能需要在这里解决冲突,然后提交。 然后做
git revert sha_of_C
请注意,您可能需要在这里解决冲突,然后提交。
这导致:
A --- ---乙Ç--- --- d --- Reverted_D Reverted_C
这是可以安全推动的,因为你实际上只是添加了一个提交,它反转了C和D的所有更改,实质上删除了它。
除非绝对必要,否则你通常应该避免不惜一切代价地进行git push --force
。 但是,如果你要做一个推动力,使用保护,你应该在做之前一定要制作一份你的分支。 如果你已经推动了,那么坚持#3通常是一个很好的规则。
希望这是有帮助的。
担
删除最后一次提交
$ git reset --hard HEAD^
删除最新的2个提交
$ git reset --hard HEAD~2
您可以在本地下载分支。 然后删除提交并执行推送
$ git pull origin
$ git checkout origin/<branchname>
$ git checkout -b <branchname>
$ git reset --hard HEAD~2
$ git push origin <branchname> --force
链接地址: http://www.djcxy.com/p/8997.html