Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何在挤压提交后删除子提交?_Git_Github - Fatal编程技术网

Git 如何在挤压提交后删除子提交?

Git 如何在挤压提交后删除子提交?,git,github,Git,Github,据我所知,当一个pull请求中有一堆提交时,gitsquash非常有用。它可以帮助合并提交,然后减少提交的数量 例如,以下是GitHub上一些压缩提交的外观: edit readme once 28d8d9c289665039e62d0be0f24876f096e591e2 second edit 子提交第二次编辑似乎没有相应的ref 是否可以在挤压提交后删除子提交,如第二次编辑 简短回答 使用fixup而不是squash。它类似于挤压,但除了

据我所知,当一个pull请求中有一堆提交时,gitsquash非常有用。它可以帮助合并提交,然后减少提交的数量

例如,以下是GitHub上一些压缩提交的外观:

edit readme once                        28d8d9c289665039e62d0be0f24876f096e591e2
  second edit
子提交
第二次编辑似乎没有相应的ref

是否可以在挤压提交后删除子提交,如第二次编辑

简短回答 使用
fixup
而不是
squash
。它类似于挤压,但除了第一次提交之外,它将放弃所有提交消息

长话短说 在我看来,这不是一个“子命令”,而是有人在新的压缩提交中意外地保留了第二次提交的提交消息。默认情况下,挤压将合并两个提交消息,由您来更新消息


在这种情况下,不需要删除任何内容。只要记住在下次挤压时根据需要更改提交消息。当您不需要其他消息时,也可以使用
fixup

hmm。。。谢谢另一个简单的问题是,如果我使用squash,并将commit推到远程。有一天,我发现“subcommit”(例如第二次编辑)中的部分代码不正确,想要删除它们,是否可以删除而不触摸“edit readme once”提交?Git提交是不可变的,因此不可能编辑提交(不重定基)。您可以使用git revert-n
并向其传递一个commit ref,它将生成与提交相反的更改,而不提交任何内容。然后,您可以编辑它并删除不需要的更改,然后提交它以还原不需要的旧压缩提交的部分内容(尽管这将起作用,无论是否已压缩提交)。