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
Git 挤压在推送后提交_Git_Git Reset_Git Squash - Fatal编程技术网

Git 挤压在推送后提交

Git 挤压在推送后提交,git,git-reset,git-squash,Git,Git Reset,Git Squash,设想一个具有以下提交的git存储库: Fixed issue 3 123eabc Fixed issue 2 (part 2) fa23b79 Fixed issue 2 (part 1) 7bea5cc Fixed issue 1 0d229f4 这些都已推送到远程主机。现在有没有办法重写历史并将中间的两个合并为一个提交?差不多 Fixed issue 3 123eabc Fixed is

设想一个具有以下提交的git存储库:

Fixed issue 3               123eabc
Fixed issue 2 (part 2)      fa23b79
Fixed issue 2 (part 1)      7bea5cc
Fixed issue 1               0d229f4
这些都已推送到远程主机。现在有没有办法重写历史并将中间的两个合并为一个提交?差不多

Fixed issue 3               123eabc
Fixed issue 2               9d23e0c
Fixed issue 1               0d229f4

一种选择是执行交互式重基,将两个问题2提交挤压在一起

git rebase -i HEAD~4
这告诉Git,您希望执行一个交互式的重基,该重基涉及到四个提交,包括从分支头开始向后计数。这将显示一个类似以下内容的列表:

pick 0d229f4 Fixed issue 1
pick 7bea5cc Fixed issue 2 (part 1)
pick fa23b79 Fixed issue 2 (part 2)
pick 123eabc Fixed issue 3
请注意,最早的提交将首先出现,四次提交中最近的一次将最后出现

将要与第1部分合并的中间提交第2部分的
拾取
,更改为
挤压

pick 0d229f4 Fixed issue 1
pick 7bea5cc Fixed issue 2 (part 1)
squash fa23b79 Fixed issue 2 (part 2)
pick 123eabc Fixed issue 3
挤压意味着将标有
squash
的提交组合到其上方的提交中,在这种情况下,将第2部分合并到第1部分中

然后保存此文件并退出编辑器,然后完成重新基准


注意:重写公共分支的历史记录可能会给使用此分支的人以外的任何人带来问题。因此,如果这种情况适用于您,您甚至可能希望避免使用此答案。

您可以,但问题是您是否应该?任何从master中提取的人都需要得到通知,重新出售重写的历史记录。回答得很好。我有一个后续问题在