繁体   English   中英

删除中间的GIT提交

[英]Remove an intermediate GIT commit

我有一个中间的git commit,现在我已将其合并到代码中。 它是错误地发生的。 我有2个选择:

  1. 从gerrit删除项目,为此我必须安装delete-project插件
  2. 从GIT存储库中删除提交。

我想对使用第二个选项提出建议,因为我没有安装插件的管理员权限。

提交1

提交2

我想保留提交1并删除提交2。提交2是目录,其中包含许多文件。

有什么建议么 ?

如果您想保留最新的提交,最好使用git rebase: http : //git-scm.com/docs/git-rebase

正常还原怎么办? 您要清除它的大小吗?

然后,您需要“ Force Push访问权限[编辑:Gerrit中],这使您可以执行

git push --force

在您跳过该提交之后

git reset --hard HEAD^

请注意,与一组开发人员一起使用存储库时,应避免重写历史记录。

我想你在找

$ git reset --hard REF

此处REF将是commit 1 SHA1

好的,所以您想摆脱一次提交。

如果尚未推出该提交,则可以使用以下命令将其本地删除

git reset --hard HEAD~

它会在当前版本之前签出修订。
您之前的历史记录: commit1--commit2
您的历史记录: commit1

如果您已经推送了提交,只要commit2没有关键commit2 (巨大,密码等),最好将commit2保留在历史记录中并还原提交而不是将其删除:

git revert <sha-of-commit2>

这将创建一个NEW提交,该提交将还原commit2所做的commit2
您之前的历史记录: commit1--commit2
之后的历史记录: commit1--commit2--commit3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM