我不知道我理解你的問題。從你的圖表中,我們嘗試構建一些新的圖表。顯然你有,在遠程共享回購:
[master] * --- [possibly more commits]
\
[release1] * --- A --- B --- C
\
[base] D --- E
而且是在自己的私人回購協議:
[master] * --- [possibly more commits]
\
[release1] * --- A --- B --- C
\
[base] D --- E
\
[devel] F --- G --- I --- J
\ /
--- H --------
使分支「devel的」的尖端提交j,它是FGI的合併+ H,全部指向D(在「基地」),其指向「A」(在版本1中)。現在有人計劃通過合併ABC + DE來發布他們將要發佈的「release2」?
如果您希望您的「devel」分支基於該合併,您只需將該合併結果(尚不存在,因此您必須等待)重新綁定。
或者,也許你的意思是上面的遠程共享回購或多或少是準確的,但你不要有你自己的「devel」分支。也許你的(本地)回購承諾樹看上去更像是這樣的:
[master] * --- [possibly more commits]
\
[release1] * --- A --- B --- C
\
[base] D --- E --- F --- G --- I --- J
\ /
--- H ---------
如果你希望它看起來像這個:
[master] * --- [possibly more commits]
\
[release1] * --- A --- B --- C
\
[base] D --- E
\
[devel] F --- G --- I --- J
\ /
--- H ---------
,那麼你可以通過創建一個「devel的」分支啓動掛起關閉提交E:
git branch devel E # use the commit-ID for commit E
,然後重新指向本地分支 「基地」 提交E:
git branch -d base; git branch base E # again you'll want the sha1
# or: git update-ref refs/heads/base E
你完成了(現在,無論如何;你最終仍然必須重新綁定你的「devel」分支)。 (我認爲這可能對理解分支有很大的幫助):我已將分支標籤放在圖中每個樹級的左側,但事實上,分支標籤位於「右側」 (在每個分支的「尖端」,就像它一樣)。當您在分支上執行「git commit」時,會添加一個新的提交,然後更新分支提示。我懷疑大多數人會「考慮」分支,就像標籤設置一次,當你執行「git分支」命令,然後永遠呆在那裏 - 但這不是他們的工作方式。分支標籤緊跟分支的頂端。如果按照我在這裏繪製它們的方式繪製提交樹時,分支的「水平部分」是必須根據提交樹結構進行處理的東西。
有點混亂:你可以添加一個圖表顯示你的分支結構? – 2012-03-15 23:00:01
@MattGibson,謝謝,用圖表編輯了這個問題。 – 2012-03-15 23:09:38