Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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_Merge_Commit_Squash - Fatal编程技术网

Git 如何用普通提交挤压合并提交?

Git 如何用普通提交挤压合并提交?,git,github,merge,commit,squash,Git,Github,Merge,Commit,Squash,在这种情况下,如何挤压这两个提交 我正在使用 commit b0e5db36ed68d4562275adeb08001b1316a4da52 Merge: ea38baa 8220bb1 commit ea38baa3f46a48722987b8dd3892d2b8d81c4d1a 但这不起作用,因为它移除了合并提交,而不适用于挤压 ,所以这里考虑两个因素: 首先,在一些方面,rebase并不总能很好地处理合并提交。我会再谈几次 第二,你所期望的结果并不完全清楚。如果你现在有 git reb

在这种情况下,如何挤压这两个提交

我正在使用

commit b0e5db36ed68d4562275adeb08001b1316a4da52
Merge: ea38baa 8220bb1

commit ea38baa3f46a48722987b8dd3892d2b8d81c4d1a

但这不起作用,因为它移除了合并提交,而不适用于挤压

,所以这里考虑两个因素:

首先,在一些方面,
rebase
并不总能很好地处理合并提交。我会再谈几次

第二,你所期望的结果并不完全清楚。如果你现在有

git rebase -i HEAD~2
然后将更改直接重新应用于合并提交

git checkout master
git reset --soft HEAD^

正如公认的答案所说,
git-rebase-i
(aka
--interactive
)支持一个附加选项
-p
(aka
--preserve merges
)。然而,与公认的答案不同,我想指出的是,这实际上似乎可以很好地实现所需的结果,因此,如果您执行
git rebase-I-p HEAD~2
操作,则合并提交将显示在交互式rebase文件中:

git commit --amend
现在,您可以编辑此重新基准文件,以将第二次提交标记为挤压并完成重新基准。一切似乎都很好

然而,我不理解为什么git文档(在一些但不是所有的文档版本中,文档说
-p
被弃用)如此复杂,以至于您的里程数可能会有所不同。似乎主要的问题出现在尝试重新排序使用此。。。所以不要那样做

不推荐使用的
-p
选项的推荐替代方案似乎是
git-rebase-i-r
;但这会产生一个非常长且复杂的交互式重新基址文件,它看起来一点也不像我所期望的(即,上面显示的文本形式的简单重新基址文件)

如果有人可以添加一个答案,详细解释在这种情况下,
git-rebase-i-p
是否可以(或不可以)以及为什么可以,那将非常有帮助


“请帮帮我。”每次我读到这篇文章时,我的喉咙里都有东西。。。我将这个问题标记为重复:可能的重复显然不是“如何挤压中间有合并提交的提交”的重复,因为这个问题是关于如何挤压合并提交本身。(要明确的是:同一个答案可能有效,但它不是同一个问题,搜索这个问题的人不太可能找到另一个问题并认为它是解决方案。)我会说“不”,但如果你告诉我你为什么需要,你应该做些别的事情
x -- x -- MC <--(master)
 \       /
  A --- B
git checkout master
git reset --soft HEAD^
git commit --amend
pick abcdeff Merge branch 'feature' into develop
pick abcdefc Extra changes