我有一些 IDE 運行組態檔,我想將它們提交到我的 git 存盤庫,以便我們的團隊可以共享它們。不幸的是,以后可能會修改它們以包含私有或安全的系統屬性。因此,我也想禁止他們在提交后進行更改。最初提交的檔案將不包含任何私人、安全或敏感資訊。
是否可以將檔案永久提交到存盤庫,并永久禁止修改它們?我知道在本地克隆上執行此操作的臨時方法(例如取消跟蹤檔案),但我希望始終將它們放在遠程,只需指示 git 永遠不要跟蹤任何更改,即使是新克隆。
uj5u.com熱心網友回復:
是否可以將檔案永久提交到存盤庫,并永久禁止修改它們?
有點。
以下是一些“某種”實作您想要的選項:
- 設定開發人員在本地使用的提交掛鉤,以防止意外提交該檔案。
- 結合分支保護在 GitHub中為該特定檔案設定代碼所有者規則,以便在修改該檔案時只有特定人員可以允許完成 PR。
你不能強迫#1。您可以強制 #2 但這不會阻止開發人員意外將敏感資料推送到共享存盤庫中。但這至少可以防止它在未經某些人批準的情況下被合并。也許這些的某種組合會是最好的。
選擇?
另一種方法是嘗試完全避免這種情況。實作它的一種方法是擁有一個未被跟蹤并且可以在 .gitignore 檔案中的覆寫/轉換檔案。然后你可以有:
my-file-base # checked in and tracked like a normal file
my-file-override # Listed in .gitignore
讀取該檔案的“事物”可以檢查是否存在,my-file-override如果存在,則可以my-file-base使用覆寫進行修改,和/或添加新內容。每個開發人員都可以根據需要進行設定。
邊注:
請注意,來自Git 檔案中關于update-index:
用戶經常嘗試使用假設未更改和跳過作業樹位來告訴 Git 忽略對被跟蹤檔案的更改。這不會按預期作業,因為在執行某些操作時,Git 可能仍會根據索引檢查作業樹檔案。通常,Git 不提供忽略對跟蹤檔案的更改的方法,因此建議使用替代解決方案。
uj5u.com熱心網友回復:
在Git的常見問題包括想忽略更改跟蹤檔案的情況,并解釋了為什么這是不可能使用Git。
幸運的是,您要處理的配置案例很容易處理。獲取實際的組態檔并忽略它。然后,簽入一個模板或一組默認值,它使用可以自定義或使用腳本通過復制到實際組態檔位置來設定。對于大多數這些情況,這是推薦的方法。
如果您使用的是 GitHub Enterprise Server,您可以使用 pre-receive hook 限制推送某些檔案,但此功能在 github.com 上不可用。無論如何,如果可能,最好使用推薦的方法來避免使用鉤子。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/343921.html
