删除它,你看到在“网络”视图中的文物可能是跟踪您的基于合并的工作流程中。
当合并的合并经营成果提交*(即它不是一个“快进”),版本库的历史DAG模型将包括表示两个分支部分。当非本地分支被推送时,其祖先将包括最初在当地分支上提交的提交。
*通过使用git merge --no-ff
或者因为两个分支已经超出其合并基础。
考虑一个假想的一系列事件和由此产生的历史DAG +裁判在中央资料库:
A$ git fetch && git checkout -b foo central/dev
# A works and commits to her local branch
B$ git fetch && git checkout -b bar central/dev
# A and B work and commit to their local branches
A$ git checkout dev && git pull &&
git merge --no-ff foo && git push central dev
# B works and commits to his local branch
C$ git fetch && git checkout -b quux central/dev
# B and C work and commit to their local branches
B$ git checkout dev && git pull &&
git merge --no-ff bar && git push central dev
C$ git checkout dev && git pull &&
git merge --no-ff quux && git push central dev
D$ git fetch &&
git checkout master && git pull &&
git merge --no-ff dev && git push central master
---o---o-------------------------------D master
\ /
\ o---o---o / (was quux in C's local repository)
\ o---o / \ / (was foo in A's local repository)
\/ \/ \/
o-------A---------B---C dev
\ /
o---o----o----o (was bar in B's local repository)
在任何时候都是当地(富,酒吧,QUUX)分公司曾直接推送到中央存储库。但是,“他们的”提交被合并提交引用,这些合并提交被推送到中央存储库中的dev分支(以及后来的主分支)。
我怀疑GitHub网络视图向您显示这些间接推送的分支。
如果你想消除分支的这种拓扑证据,你将需要移动到基于rebase操作而不是合并操作的工作流(这意味着本地分支的原始“分支点”将被丢弃,这对您的整体工作流程可能是重要的也可能不重要)。
不要陷入困境,试图让DAG看起来很“漂亮”。工具不在乎DAG是否“丑陋”,你也不应该。您应该专注于挑选并正确使用生成DAG的分支工作流程,以便让工具为您提供有用的工作。
正如我提到的分支本身并不存在于原点(GitHub),而是它的效果可以在GitHub的“网络”视图中看到。 – Xubin 2010-06-02 17:15:37
github无法联系到您的开发人员计算机,并查看您在那里得到了什么 - 如果它位于网络视图上,那么在某些时候它必须已被推入到github中。网络视图中存在大量缓存,因此显示的标签/分支可能已过时? – deanWombourne 2010-06-02 17:27:13
虽然想到它 - 你确定它是一个分支而不是标签吗?什么'git标签'输出? – deanWombourne 2010-06-02 17:29:09