Git快进VS没有快进合并


Git fast forward VS no fast forward merge

Git合并允许我们执行快进和非快进分支合并。什么时候使用快进合并,什么时候不使用快进合并?


当你想有一个清晰的概念你的特色分支时,选择是非常有用的。所以,即便没有发生过,FF是可能的——你仍然想要在主线上的每一件事都符合一个特征。所以你把一个特色分支当作一个单一的单位来处理,把它们当作一个单一的单位来处理。当你与--no-ff组合时,从你的历史中可以看出这一点。

如果你不在乎这些事——你可能会在任何可能的地方离开。你会有更多的感觉工作流程。

例如,本条的权威认为,--no-ff备选案文应予以否定,并应将其理由封闭在下面:

考虑一下一系列的"特征"分支机构共同形成一个新特征的情况:如果你只是"Git Merge Feature"、"U Branch"没有--no-ff的话,这是不可能从GIT历史上看出来的,在GIT历史上,共同实现了一个特征——你需要人工阅读所有的信息。"Reverting a whole feature(I.E.a group of commit s),i s a true headache[if EDOCX1,0],whereas it i s easily done if the EDOCX1,0].Flag was used[because it's one commit]"

MGX1〔0〕


我可以给项目提供一个共同的例子。

这里,选项--no-ff(I.E.True Merge)与多个父母建立了一个新的委员会,并提供了一个更好的历史追踪。其他,爱德华王子岛,爱德华王子岛

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ git checkout master
$ git checkout -b newFeature
$ ...
$ git commit -m 'work from day 1'
$ ...
$ git commit -m 'work from day 2'
$ ...
$ git commit -m 'finish the feature'
$ git checkout master
$ git merge --no-ff newFeature -m 'add new feature'
$ git log
// something like below
commit 'add new feature'         // => commit created at merge with proper message
commit 'finish the feature'
commit 'work from day 2'
commit 'work from day 1'
$ gitk                           // => see details with graph

$ git checkout -b anotherFeature        // => create a new branch (*)
$ ...
$ git commit -m 'work from day 3'
$ ...
$ git commit -m 'work from day 4'
$ ...
$ git commit -m 'finish another feature'
$ git checkout master
$ git merge anotherFeature       // --ff is by default, message will be ignored
$ git log
// something like below
commit 'work from day 4'
commit 'work from day 3'
commit 'add new feature'
commit 'finish the feature'
commit ...
$ gitk                           // => see details with graph

注意到如果newFeatureBRANCH重新使用,Instead of creating a new branch,GIT will have to do a --no-ffmerge anyway.这意味着快速的前进并不总是合格的。


另一种可能性是,某人可能希望有个人特征分支,而代码只是在一天的末尾。这使得能够在细节上进行跟踪开发。

我不想用不工作的代码来控制污染物的发展,所以我做了----不工作的代码可能只是其中一个在寻找的东西。-----------------------------------------------------

作为一个侧注,可能不需要在一个个人分支上下载工作代码,因为历史可以重写EDOCX1[…]6],并且强迫服务器长时间工作,因为没有人在同一个分支上工作。