2010-07-20 88 views
1

我是git的新手;我知道基本的命令,但我不熟悉組織項目的最佳方式。使用Git更新一個文件,對第二個文件進行更改

我有兩個版本的文件做幾乎相同的事情。這兩個文件之間的唯一區別在於它們掃描特定文件的方式,並且區別僅限於一個代碼區域。在添加功能之後,我可以將相同的更改複製並粘貼到第二個文件中,但我想這就是好的版本控制是爲了簡化。

我最好的猜測是我應該創建第二個分支(比如'branch_B')並在branch_A和branch_B中保留同名文件的副本(以便它們可以輕鬆合併)。但是,當我合併時,是不是最終會在主分支中出現兩個文件的奇怪組合,而不是第二個文件的更新版本?

+3

我想,這是不是「有什麼好版本控制是爲了簡化」。而是試着重構你的代碼(?),只在一個地方使用通用部分,然後在兩個專業化中使用'#include' /'import' /'require' /' use'/..這個文件。 – 2010-07-20 14:10:12

回答

5

避免重複代碼是您應該通過重構代碼來做的事情。版本控制並不意味着替代它。

Git可以有效地存儲重複的內容,但這不是重點。一旦將代碼從代碼庫檢出到工作樹中,您仍然可以使用重複的代碼。以這種方式使用您的版本控制工具不會爲您更好地維護。

參見:Code reuse

+0

+1。戰略模式是一個很好的選擇。 – 2010-07-20 14:16:41

+0

謝謝,本。我有這樣的感覺,但我想檢查。 – chimeracoder 2010-07-20 17:32:30

0

保留主分支中的變體A和分支_B中的變體B.無論何時需要對文件進行更改,請在變體A中製作它們並將其合併到branch_B中。在branch_B中,保留一個額外的提交(或幾個),其中包含使branch_B不同的所有更改。

honk的建議重構你的代碼是一般的好建議,但是我意識到有時這是不可能的。

0

我確認:

  • 如果您在f.txtbranch A)變化
  • 合併到支路B

只有f.txt-branchA變化將上報f.txt-branchB

現有的差異的部分將不會被合併。
(也就是說,除非您的修改直接在「代碼的一個區域」內)