2009-11-06 122 views
0

這可能看起來像一個奇怪的問題,但忍受着我。分支沒有分支

我想(AB?)使用git的小項目我的工作,在這裏我想分支文件,但保持當前分支中的分支文件以新的名稱,維護歷史(允許我重新改變原來的)。這與我認爲的Subversion類似,Subversion不知道分支,只是複製。

我想有雙倍作爲文檔模板的文檔(這些是純文本文件,不用擔心合併將是很有可能的),並且爲了在另一個文檔上創建新文檔,我希望只是分支它。

這是在所有可能使用Git?如果不是的話(我實際上假設它不是,Git的結構),是否有任何可以想象的選擇?不過,我不想從Git中移走,因爲我使用它的次數更多,所以如果沒有好的解決方案,我想我可以在其上實現我自己的(輕量級)分支/ rebase。

回答

2

這有什麼錯分支?你可以很容易地維護一個「模板」分支,並將它們之間的文檔移動。

說,例如:

git checkout -b templates 
git checkout master 
git checkout templates path/to/template.ext 
cp path/to/template.ext path/to/document.ext 
# decide you want to change the template 
cp path/to/document.ext path/to/template.ext 
git commit -a -m "changed template" 
git checkout templates 
git merge master 
+0

是的,我可能不得不求助於做這種方式(這就是我的意思是我自己的分支/衍合)。這種方法的問題是,無法知道文檔基於哪個模板(以及該模板基於哪個模板,等等),所以我仍然必須實現我自己的方案來執行正確的rebase當鏈中的文檔發生變化時。 – falstro 2009-11-06 08:34:57

0

你可以想見,在安裝目錄樹中的不同地方同樣的子模塊,不同版本的安裝。文件名會相同,但版本不同。不過,我不確定我想成爲那個維護那些東西的人。

1

git會檢測你的文件的副本,並正確地跟蹤它們的歷史。

也許我不理解你的要求?

  • 是否您希望能夠修改模板文件並讓「分支」文件反映更改?
  • 難道你只是想能夠跟蹤哪些文件來自哪些模板?
+0

我想跟蹤哪些文件來自哪個模板/文件,並且能夠將這些更改合併到文件中。據我所知,git只跟蹤分支,複製一個文件就像寫一個不同名字的新文件一樣,或者有辦法告訴git這實際上是x的副本嗎? – falstro 2009-11-09 21:01:16

+0

然後git在幕後爲你做這件事。你不必告訴git這個文件是x的一個副本,它已經知道它是一個x的副本,只是從文件的內容。 Git自動檢測文件副本。它還自動檢測從一個文件移動到下一個文件的內容。使用git diff -M和git show -M來測試它,但它應該顯示該文件已被複制。 – 2009-11-10 05:13:38

+0

我想git會跟蹤內容,而不是文件。因此,文件名之間沒有跟蹤,只是內容,在這種情況下很難判斷是否足夠好。 http://stackoverflow.com/questions/1537616/handling-renames-svn-vs-git-vs-mercurial – falstro 2009-11-12 17:05:27