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 - Fatal编程技术网

git压缩几个合并提交

git压缩几个合并提交,git,Git,我签出了一个本地分支,对它做了几次承诺,然后将我的分支推到了origin。我的老板想将我的分支合并到master中,但显然他有这样的印象:他必须将每个提交单独合并,而不仅仅是将我的分支的提示合并到master中。因此,我们的git历史现在如下所示: 是否有一种“正确”的方法来修复历史记录,以便它只显示一个合并提交,即我的origin/pl/EngATSDataOnChkPrint分支到origin/master的合并提交?我怀疑这会涉及某种git-rebase-I和一些壁球,但我厌倦了在没有得

我签出了一个本地分支,对它做了几次承诺,然后将我的分支推到了origin。我的老板想将我的分支合并到master中,但显然他有这样的印象:他必须将每个提交单独合并,而不仅仅是将我的分支的提示合并到master中。因此,我们的git历史现在如下所示:

是否有一种“正确”的方法来修复历史记录,以便它只显示一个合并提交,即我的origin/pl/EngATSDataOnChkPrint分支到origin/master的合并提交?我怀疑这会涉及某种
git-rebase-I
和一些壁球,但我厌倦了在没有得到建议的情况下尝试这样的事情(我比我的老板更擅长git,但不是很多…)


谢谢

rebase
通常删除合并提交,因为基于rebase的提交是线性的,不需要合并。只要试着看看结果,如果出了什么问题,就用
reflog
reset
撤销糟糕的实验

问题是,历史似乎已经被推到公共存储库(源)中,因此在这种情况下,您必须进行强制推送,这通常对公共历史不好。如果我是你,我会保持原样。历史看起来很奇怪,但也不错;博士版本:你可以清理这个,但你可能不应该,因为太多的人可能已经依赖于混乱。如果只有两个人,也许不会太多;那部分是你必须决定的(最好是和他们一起决定)


这些承诺已经发布,您和其他几个人已经收到了它们(我们至少知道两个,即您和您的老板)

您可以重做所有操作以生成更少或不生成合并,但是如果这样做,任何接收合并的人都必须做一些工作来调整其存储库。原因很简单:git只会向存储库添加新内容,而不会实际删除任何内容。1

因此,您可以使用
git reset
来“放弃”一些合并,然后创建新的合并,但您的存储库仍然保留原始合并。。。任何捡到它们的人,也仍然拥有它们,并且可能已经完成了依赖于它们的工作。如果是这样的话,当他们将自己的工作与您认为已删除的工作(但他们仍然有)合并时,他们将重新引入这些提交,这意味着他们需要知道不要将自己的工作与您认为已删除但未真正删除的工作合并

具体地说,他们需要在旧的工作基础上重新调整他们的工作,或者在新的替代品上重新调整他们的工作,在他们开始讨论这个问题时,无论是哪种情况

如果您选择在删除这些合并之后或作为其一部分重新设置工作的基础,情况也是如此。(通常,重基丢弃合并。)这是因为重基通过使用新ID和新父ID将旧提交复制到新提交来工作

例如,假设您有三个提交,并且希望移动(重新设置)它们。必须复制第一个“移动”提交,以便它可以有一个新的父ID,这将为它提供一个自己的新ID。这意味着还必须复制第二次提交,以便将第一次提交的新ID作为其父项,并为第二次提交提供一个新ID。然后,必须复制第三次提交,以便将第二次提交的新ID作为其父项:

(之前):


。。。非常感谢。这或多或少是我害怕的。你是对的,我不知道组织中是否有其他人已经获取了这个存储库,所以我想最好还是别管它,确保Boss知道从现在起如何正确地完成它。再次感谢!
... <- o <- o <- o     <-- master
        \
         o <- o <- o   <-- yourbranch
... <- o <- o <- o               <-- master
        \         \
         \         o <- o <- o   <-- yourbranch [copies]
          \
           o <- o <- o          [abandoned originals]