繁体   English   中英

如何重做压缩分支上的一些选定提交

[英]How to redo squash some selected commits on branch

如何重做或撤消压缩分支上的某些选定提交,简而言之,我的问题是

  1. 第一次

提交是 ABCDEFG

  1. 在压缩了一些提交之后,它们是

提交是 AB-CD-EF-G

  1. 但现在我需要重做这第二步,并像这种方式那样压缩提交
 commits is AB-CD-E-FG

有什么我错了让我纠正。 我只是想简化我的查询

您从1.2.对 go 所做的操作已经改写了您的历史记录,因此2.中的G与 1. 中的G不具有相同的 hash 1.

重新使用你的符号:

  1. 第一次

提交是 ABCDEFG

  1. 在压缩了一些提交之后,它们是

提交是 AB-C'-D'-EF-G'


要撤消重写,您需要获取原始G提交(不是G' )的 hash 。

您本地的 git 存储库仍应在其 reflog 中包含它:

# in the following list of commits, spot the one that would match your initial commit :
git reflog

# you will have a shorter list if you look at the reflog of your working branch :
git reflog my/branch

一旦你有了 hash:

  • 确保你有一个干净的仓库(如果你有本地更改:存储它们或丢弃它们),
  • 运行git reset --hard <that hash>
  • 并重新做你的挤压。

关于git reset --hard的强制警告

git reset --hard是为数不多的破坏性 git 命令之一:如果您的磁盘(跟踪的文件)上有未存储在 git 中的更改,则此命令将强制删除这些更改,并重新设置这些文件的内容目标提交的内容。

这就是为什么建议首先查看您的本地更改,并确定您丢弃的更改并不重要。 保存它们的方法很简单:只需创建一个提交或存储——它们至少可以在之后从 reflog 中访问。

暂无
暂无

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

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