2011-05-08 61 views
4

使用案例:我們有一些我們想要跟蹤的項目元數據文件,但很少(如果有的話)提交,儘管它們始終在本地更新(不同的用戶有不同的項目路徑)。在正常情況下,除非明確要求,否則用戶不應該提交這些文件。可以跟蹤文件,但不顯示它們更新?

Git ignore用於未跟蹤文件。

是否有類似的功能讓git忽略被跟蹤的文件?有沒有一種方法可以在中央倉庫中更改,並會反映所有用戶?

+0

[git:忽略* *版本控制的文件]的可能重複(http://stackoverflow.com/questions/5011390/git-ignoring-a-file-which-is-version-controlled) – 2011-05-08 10:38:25

+0

I猜猜,這個問題是Git Duplicates SO競賽的贏家。 – 2011-05-08 10:39:06

+1

@Pavel:除了這些重複內容之外,沒有一個在OP的上下文中提到了實際的解決方案,這是一個過濾器驅動程序。請參閱下面的答案。 – VonC 2011-05-08 10:49:47

回答

3

是否有一種方法可以在中央倉庫中進行更改,並反映所有用戶?

沒有在一般的(分佈式)上下文中:任何鉤子或進程都不能在中心位置「改變」並且被所有分佈式下游回購站選擇。

如果您的用戶在central template之後創建了自己的回購,那麼某些默認掛鉤可以引用中央腳本(即,如果我們在同一網絡上的用戶說話,共享磁盤中所有用戶都可訪問的腳本)。


adymitrukanswer認爲使用開發分支,因此不承諾‘公開’分支(即推即分支/拉)私人變化。
這都很好,但:

  • 這不是一個自動的過程(可執行的所有回購),但採取的每個開發人員獨立(或不採取,因爲他們忘了)
  • 這涉及一個動作從你需要發佈的內容中挑選出你不想發佈的提交,除非在這種情況下,開發人員必須執行額外的步驟來記住對的任何更改那些特定文件必須而不是被合併到公共分支。永遠。 (只要他/她真的花時間在單獨的提交中隔離這些特定更改!)

這將是更好地使用filter driver(其在.gitattributes文件中聲明和可以通過克隆傳播)有:

enter image description here

  • a smudge腳本:

    • 能夠識別您的元數據文件
    • 節省結賬其內容的內容
  • 一個clean腳本:

    • 能夠識別你的元的內容 - 數據文件
    • 決定他們的修改是否需要提交
    • 恢復這些元數據文件的初始內容提交
+0

你的答案總是出現,謝謝你! – 2011-05-08 11:43:03

3
$ git update-index --assume-unchanged <filename> 

雖然這隻適用於本地。

+0

值得注意的是相反的動作:'git update-index --no-assume-unchanged ' – 2011-05-08 11:43:37

1

使用開發分支。針對您的環境提交具體的更改。與我們的戰略重新融合。現在這些更改將永遠不會被分享到公共分支。其他答案缺少使用開發分支的要點。

+0

好點:我們錯過了「開發分支」:+1。但是這並沒有解決OP的具體需求,即強制以某種方式對所有這些文件進行修改。 -1。我已經在你的回答中附帶了評論。 – VonC 2011-05-09 05:31:53

+0

是的。像@VonC提到的那樣,這並不是真正的問題,而是相關的。謝謝。 – 2011-05-09 09:39:34