这个定义或许会有意想不到的影响。比如,假设你有两个分支,“stable” 和 “new-idea”, 它们的顶端在版本 E 和 F:
A-----C----E ("stable")
\
B-----D-----F ("new-idea")
所以提交(commits) A, C和 E 属于“stable”,而 A, B, D 和 F 属于 “new-idea”。如果之后你用下面的命令 将“new-idea” merge 到 “stable” :
git checkout stable # Change to work on the branch "stable"
git merge new-idea # Merge in "new-idea"
…那么你会得到这个:
A-----C----E----G ("stable")
\ /
B-----D-----F ("new-idea")
要是你继续在“new idea” 和“stable”分支提交, 会得到:
A-----C----E----G---H ("stable")
\ /
B-----D-----F----I ("new-idea")
因此现在A, B, C, D, E, F, G 和 H 属于 “stable”,而A, B, D, F 和 I 属于 “new-idea”。
当然了,分支确实有些特殊的属性——其中最重要的是,如果你在一个分支进行作业并创建了一个新的提交(commits),该分支的顶端将前进到那个提交(commits)。这正是你所希望的。当用git merge 进行合并(merge)的时候,你只是指定了要合并到当前分支的那个并入分支,以及当前分支的当前进展。