我會建議:使用分支
- (這樣的提交順序並不重要:每個開發人員記錄他/她自己的一套在他/她自己的分支修改)
- 合併可以解決衝突的主'dico'分支上的分支
(Git在這個特別好)
您可以快速測試:
C:\test\git>mkdir dico
C:\test\git>cd dico
C:\test\git\dico>git init
Initialized empty Git repository in C:/test/git/dico/.git/
C:\test\git\dico>echo words for B> B.txt
C:\test\git\dico>echo words for K> K.txt
C:\test\git\dico>git add -A & git commit -m "first letters"
[master (root-commit) e91d6fa] first letters
2 files changed, 2 insertions(+), 0 deletions(-)
create mode 100644 B.txt
create mode 100644 K.txt
你必須在主分支空迪科。
德瓦走來:
C:\test\git\dico>git checkout -b devA
Switched to a new branch 'devA'
C:\test\git\dico>echo Kick the Bucket: my def from devA>>B.txt
C:\test\git\dico>type B.txt
words for B
Kick the Bucket: my def from devA
C:\test\git\dico>git add -A & git commit -m "def from devA"
[devA 0f27595] def from devA
1 files changed, 1 insertions(+), 0 deletions(-)
發展局走來,並得到德瓦的工作:
C:\test\git\dico>git checkout master
Switched to branch 'master'
C:\test\git\dico>type B.txt
words for B
C:\test\git\dico>git checkout -b devB
Switched to a new branch 'devB'
C:\test\git\dico>git merge devA
Updating e91d6fa..0f27595
Fast forward
B.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
C:\test\git\dico>type B.txt
words for B
Kick the Bucket: my def from devA
哦,不!這個定義錯誤的地方!
C:\test\git\dico>echo words for B>B.txt
C:\test\git\dico>echo Kick the Bucket: my def from devA>>K.txt
C:\test\git\dico>git add -A & git commit -m "move def to K by devB"
[devB 473614d] move def to K by devB
2 files changed, 1 insertions(+), 1 deletions(-)
修復devB分支。發展局接着說:
C:\test\git\dico>echo add to def by devB>>K.txt
C:\test\git\dico>git add -A & git commit -m "elaborate def by devB on K"
[devB f9ae17d] elaborate def by devB on K
1 files changed, 1 insertions(+), 0 deletions(-)
含義,在德瓦分支,德瓦還對這個定義的工作:
C:\test\git\dico>git checkout devA
Switched to branch 'devA'
C:\test\git\dico>type B.txt
words for B
Kick the Bucket: my def from devA
C:\test\git\dico>type K.txt
words for K
C:\測試\ git的\迪科>回聲elabore DEF從德瓦在B >> B.txt
C:\test\git\dico>type B.txt
words for B
Kick the Bucket: my def from devA
elabore def from devA in B
C:\test\git\dico>git add -A & git commit -m "devA go on on B.txt"
[devA 1da899a] devA go on on B.txt
1 files changed, 1 insertions(+), 0 deletions(-)
如果發展局檢查DEVA的工作,他將檢測到衝突,妥善解決它:
C:\test\git\dico>git checkout devB
Switched to branch 'devB'
C:\test\git\dico>git merge devA
Auto-merging B.txt
CONFLICT (content): Merge conflict in B.txt
Automatic merge failed; fix conflicts and then commit the result.
C:\test\git\dico>git diff
diff --cc B.txt
index 1cc6ea9,a986721..0000000
--- a/B.txt
+++ b/B.txt
@@@ -1,1 -1,3 +1,6 @@@
words for B
++<<<<<<< HEAD
++=======
+ Kick the Bucket: my def from devA
+ elabore def from devA in B
++>>>>>>> devA
他會從B.txt中刪除額外的定義並將其添加到K.txt中(然後會去devA並告訴他/她停止,合併他的工作,然後繼續在正確的文件中!)
只需添加說明這種工作流程 – VonC 2009-09-22 09:13:42
注意的情景:作爲一個「Pythonista」,你可能會更舒服水銀(http://mercurial.selenic.com/wiki/),這確實是什麼混帳做了大部分。 – VonC 2009-09-22 11:15:15