2012-02-11 69 views
5

可能重複:
Locking binary files using git version control system在Git中,有沒有辦法將文件標記爲「純」?

我犯它永遠不應爲合併文件,但覆蓋(或許還有一個警告)當其他人拉開。有沒有辦法完成這個?

+1

它以什麼方式「純」?它可能是派生文件或二進制文件? – cmbuckley 2012-02-11 23:09:20

+0

我想不出另一個字。也許是不可說的?是的,爲了我們的目的,讓我們說它是一個派生文件。 – 2012-02-11 23:22:35

+0

這聽起來很像'我需要Git鎖'的論點,雖然措辭不同。你要求的是違背DVCS的精神。 – Perception 2012-02-11 23:24:11

回答

5

這是有點不清楚你的實際情況是什麼。你應該問自己的第一個問題是文件是否真的需要被跟蹤 - 不可合併的文件通常是派生文件,正如你在評論中所建議的那樣,因此不需要(也不應該)被跟蹤。

如果你真的需要跟蹤它,它是一個二進制文件? Git不會嘗試合併二進制文件 - 它們總是顯示爲合併衝突。 Git很擅長檢測二進制文件,所以在這種情況下,你可能是安全的。如果它不是二進制文件,那麼你仍然強迫Git適當地處理它。在.gitattributes文件,添加類似:

path/to/file merge=binary 

這將引導其把它當作一個二進制文件進行合併的目的。你也可以,如果你想,定義一個自定義的合併驅動程序。使用merge=my_merge_driver在gitattributes文件,然後在你的gitconfig添加類似:

[merge "my_merge_driver"] 
    name = descriptive name 
    driver = my_script %O %A %B 

的三個參數爲腳本是我們共同的祖先版本(O爲原件),當前分支的版本(A)和其他分支的版本(%B) - 它們是臨時文件,並且合併驅動程序應該執行合併並將結果保留在%A中。有關詳細信息,請參閱man gitattributes

+0

即使在快速合併的情況下,這項工作是否還可行? – Carl 2012-10-16 20:49:48

+0

@carleeto只有在文件實際需要合併時纔會調用合併驅動程序,而在快進合併中不是這種情況。但是除非你在這裏做了與OP不同的事情 - 這並不重要 - 快進合併已經用合併版本覆蓋了原始版本。 – Cascabel 2012-10-16 22:51:40

+0

謝謝你。我只是試圖保留一些令人討厭的構建產品,這些產品在主要的回購庫中分散了我的注意力:) – Carl 2012-10-17 04:34:14

相關問題