雖然我即將建議可能類似於從#999064的答案,我會放棄它。
基本上你想要的是使用兩個分支。 master
是您的所有公共工作所涉及的主要分支。 work
是您的私人分支。所以,你所做的只是當你想要改變爲公開的時候,你可以在master
上做出提交。如果提交是私有的,則在work
分支上進行。
訣竅是將master
連續合併回work
。這樣work
將具有master
的所有更改,但master
將只包含那些在master
上進行的提交。
那麼你得到的是:
-- work --------- c -- e ------- h
/ /
-- master -- a -- b -- d -- f -- g
master
包含提交的a,b,d,F,G。 work
包含合併提交c(包含a,b),h(包含d,f,g)和常規提交e。
e僅在work
分支上,而所有其他提交(合併提交除外)都在兩個分支上。
對於如何產生上圖的一個例子:
# on branch master
# changes for a
git add .
git commit -m 'commit a'
# changes for b
git add .
git commit -m 'commit b'
# switch to work
# merge a and b (from master) into work, producing merge commit c
git checkout work
git merge master
# switch to master
# make commits d, f and g
git checkout master
...
# switch to work
# make commit e
# merge d, f and g (from master) into work, producing merge commit h
git checkout work
git merge master
所以你有兩個遙控器,public
和private
。您將work
和master
改爲private
,但您只需將master
改爲public
即可。
我希望有幫助。
感謝您的回答。我之前已經考慮過子模塊,但是他們對如何組織項目非常嚴格。我主要是在尋找一種方法來自動收集私人回購中的提交,並在公共場合一次性應用它們。 – 2011-02-04 09:04:44
嗯。聽起來很有趣。我想到了這樣的工作流可能具有的其他用例。 – 2011-02-04 13:15:49