git `merge --squash` does not add “Merge” header to commit
在我在提交中找到一个"合并"头之前,我一直在想所有工具如何知道哪些分支/提交是合并的。
我的问题是:为什么
换言之:为什么我在与
谢谢您。
一些修订信息:
"合并头"是指合并后
1 2 3 4 | commit 7777777 Merge: 0123456 9876543 Author: Some Body <...> Date: Fri .... |
…虽然
。
我的问题又是一样的,见上文。
铊;博士:
"merge头,"你不值得一提的是,在这commits细胞形态。而不是,它是某个东西的那
/好的。 作为一名merge
我们的面貌,在使用的第一名,因为这是simpler页。在‘出去,一merge承诺是简的承诺与至少两commits亲子。这是它真的很简单。每一个承诺有一些号码的父母。一根有父母的承诺(零库和最有只有一个根的承诺,这是第一个承诺过的机制,这obviously不能有父母,有一个承诺)。最普通的一个commits有好的父母,和所有其他commits有两个或更多的parents1和是因此merge commits。。。。。。。然后,我们shorten的说法。"merge承诺"到"是一merge",改变"merge"从一adjective(修饰"承诺"(名词)的意思,"A merge承诺")。
/好的。
如果一个merge承诺是一个承诺,与双父母,然后
/好的。
1other vcses可能停止在两个。mercurial不好的方法,例如:Hg的承诺永远有两个以上的父母。‘出去,然而,允许任何承诺有任何数的父母。A NEA承诺与三个或更多的父母是被称为一merge章鱼,和normally这些commits是制造使用
/好的。 作为一个动词的merge
的动词形态的merge是更多更复杂的或至少,它是在‘出去。我们可以区分之间的两大形式得以AS:有好的法案得以源代码的变化,才有"法案得以分支。(这brings的问题"什么是一个分支"。有一批下载到这个问题比你认为的可能,所以,看我们做什么exactly均用"分"???????)许多NEA commands可以做动词类学院并入,包括
/好的。 合并更改
合并源更改更恰当地称为"三方合并"。关于这方面的更多信息,请参阅维基百科第3篇或VONC的回答,为什么3路合并比2路合并更有利?细节可能会变得相当复杂,但这个合并过程的目标已经足够简单了:我们希望将对某些公共基础所做的更改合并在一起,即,给定一些起点B,我们找到更改c1和c2并将它们合并以进行单个新更改c3,然后添加该c更改为基础B以获取新版本。好的。 在Git中,合并三方合并源的行为本身使用Git的索引,也称为"临时区域"。通常,对于将进入下一次提交的每个文件,索引只有一个条目。当您 一旦所有冲突都解决了,Git将能够进行新的提交。好的。进行合并提交 使 最后一部分实际上非常简单,因为索引/临时区域都已经设置好了。Git只是像往常一样提交,除了不将当前( 2the /好的。 当旧的方法,维基百科,我发现一些小inaccuracies在它是的,现在的设计实例,它的可能有两个以上的DAG LCAS,但是没有时间到工作是它,和它不是一个坏的概述。 /好的。 4often,它永远不会让bothers的conflicted条目中的第一位。NEA会的,如果可能,简捷消失在夜的 /好的。 我是不会断手是否让‘出去的多指标的条目之前,attempting得以在大学的差异时,或在attempting和失败的。它不会,但是,要使全三维的条目在奔跑中的自定义merge司机。 /好的。 非merge"merges" 在以上序列检查出一些承诺(通常一支尖),另一个是运行 /好的。 快进 有时, 当 您可以使用 请注意,我们在这里涵盖了三种情况中的两种:好的。 缺少的第三个例子是动词不带名词:我们如何得到合并的动作,组合变化,不带名词/形容词形式的合并承诺?这就是"壁球合并"的由来。运行 就是这样,就是这样!它只是在最后进行一个正常的、非合并提交。奇怪的是,它强迫你做出承诺,而不是自己去做。(没有根本的理由必须这样做,我不知道为什么Git的作者选择让它这样做。)但这些都是机制,而不是政策:它们告诉你如何做出各种承诺,但不是你应该做什么,什么时候做,或者最重要的原因。好的。 5你可以告诉 为什么这个问题很难回答,就像所有哲学问题一样,没有一个正确的答案(但肯定是一堆错误的答案)。考虑一下这个事实:每次使用 这三者之间的唯一区别(除了第一个明显的"根本没有新提交"之外)是它们在提交图中留下的记录。6快速前进显然没有留下任何记录:图与以前保持不变,因为您没有添加任何内容。如果这是你想要的,那就是你应该使用的。在一个你在跟踪别人的工作而从不做你自己的事情的存储库中,这可能是你想要的。这也是默认情况下你将得到的,而Git将"只为你工作"。好的。 如果进行常规合并,则会留下合并记录。所有现有的提交都保持原样,Git添加了一个新的提交,有两个8个家长。以后来的人会看到谁做了什么,什么时候,怎么做,等等。如果这是你想要的,这就是你应该做的。当然,一些工具(如 如果进行挤压合并,则不会留下合并记录。您可以创建一个新的commit来获取每个merge-as-a-verb动作,但新的commit不是merge-as-a-noun。以后来的人都会看到所有的工作,但不是从哪里来的。像 如果你以后再也不打算做一个被压扁的变化的 如果您进行挤压合并是为了使 当然,在你的反应中也是如此;但是你的反应是私有的,最终会失效,所以我们将忽略它们。好的。 7这假设不管"他们"是谁,都不会通过重新调整或删除已发布的提交来"倒带"提交图。如果它们确实删除了已发布的提交,那么在默认情况下,您的Git将把这些提交合并回,就像它们是您自己的工作一样。这是任何发布Git存储库的人都应该认真考虑"倒带"这种提交的一个原因。好的。 8不允许任何奇特的章鱼融合。好的。好啊。 git merge-如果主服务器中不存在这些提交,将合并从分支到主服务器的所有提交[保留提交顺序]。它还添加了一个新的提交ID,显示http://repo name的合并分支'branch name'到"master" 现在git merge——squash——找到所有不同于master的文件,并将它们标记为modified。现在,当您提交这些代码时,它们将使用您提供的消息(就像正常提交一样)进入一个新的提交ID。