Git 如何在挤压提交后删除子提交?
据我所知,当一个pull请求中有一堆提交时,gitsquash非常有用。它可以帮助合并提交,然后减少提交的数量 例如,以下是GitHub上一些压缩提交的外观:Git 如何在挤压提交后删除子提交?,git,github,Git,Github,据我所知,当一个pull请求中有一堆提交时,gitsquash非常有用。它可以帮助合并提交,然后减少提交的数量 例如,以下是GitHub上一些压缩提交的外观: edit readme once 28d8d9c289665039e62d0be0f24876f096e591e2 second edit 子提交第二次编辑似乎没有相应的ref 是否可以在挤压提交后删除子提交,如第二次编辑 简短回答 使用fixup而不是squash。它类似于挤压,但除了
edit readme once 28d8d9c289665039e62d0be0f24876f096e591e2
second edit
子提交第二次编辑似乎没有相应的ref
是否可以在挤压提交后删除子提交,如第二次编辑 简短回答
使用fixup
而不是squash
。它类似于挤压,但除了第一次提交之外,它将放弃所有提交消息
长话短说
在我看来,这不是一个“子命令”,而是有人在新的压缩提交中意外地保留了第二次提交的提交消息。默认情况下,挤压将合并两个提交消息,由您来更新消息
在这种情况下,不需要删除任何内容。只要记住在下次挤压时根据需要更改提交消息。当您不需要其他消息时,也可以使用fixup
。hmm。。。谢谢另一个简单的问题是,如果我使用squash,并将commit推到远程。有一天,我发现“subcommit”(例如第二次编辑)中的部分代码不正确,想要删除它们,是否可以删除而不触摸“edit readme once”提交?Git提交是不可变的,因此不可能编辑提交(不重定基)。您可以使用git revert-n
并向其传递一个commit ref,它将生成与提交相反的更改,而不提交任何内容。然后,您可以编辑它并删除不需要的更改,然后提交它以还原不需要的旧压缩提交的部分内容(尽管这将起作用,无论是否已压缩提交)。