2011-11-04 67 views
251

有沒有辦法強制git添加文件,儘管.gitignore文件?強制添加,儘管.gitignore文件

+3

一個更好的問題可能是 - 爲什麼你想這樣做?如果你想跟蹤一個文件,取消對它的管理(在'.gitignore'文件中用'!'前綴它的模式,例如'!dont/ignore/this/file')。 –

+4

@OhadSchneider如果您強制提交構建文件到另一個分支,這很有用。一些項目,比如StrongLoop,用於安全部署 – Deminetix

+4

@OhadSchneider對我們來說,更多的原因是大多數開發人員在Visual Studio 2015中安裝git,這會在用戶文件夾中添加一個全局gitignore。這不包括諸如* .dll和* .exe的文件。這對於我們的新項目來說很好,它只使用在構建過程中檢索的nuget包,但對於少數較舊的項目,我們仍然使用在解決方案中手動引用的dll。對於那些項目,我們希望手動包含它們,而不是告訴每個開發人員評論全球gitignore中的* .dll和* .exe文件。 – Nullius

回答

354

man git-add

-f, --force 
     Allow adding otherwise ignored files. 

那麼運行這個

git add --force my/ignore/file.foo 
+6

Uhm,不工作,在git狀態下,文件仍然沒有顯示 – Mark

+4

好吧,我測試了它,以確保它真的有效,它確實如此。你能描述一下你的environemnt(操作系統,git版本......)嗎?這是我基本上完成的:'echo「/ foo」>> .gitignore; echo「bar」> foo; git add foo#應該拋出一個錯誤; git add -p foo#works'(不能在評論中粘貼換行符,1執行命令1 –

+1

我的錯 - 重新克隆回購版現在可以運行了。謝謝 – Mark

6

儘管丹尼爾BÖHMER的工作方案,轄施耐德提出的意見更好的解決方案:

如果該文件通常被忽略,並強制添加它 - 將來可能會再次意外忽略它(例如文件被刪除時,然後提交併重新創建文件)。

你應該只在這樣的的.gitignore文件未忽略它: Unignore subdirectories of ignored directories in Git

+1

這是正確的。 - 爲小數據文件增加選項,然後重新排列一小部分文件夾摧毀和破壞所有受到追蹤力量的文件。但是,在'.gitignore'中使用沒有文件夾層次結構的'!specific-file-name.txt',這種跟蹤方式會跟隨回購文件。 – Merlin

+0

這取決於場景,例如有時你想排除所有文件夾中的「1.txt」,有時候「folder1/*。txt」 –

1

實現這將是暫時的編輯gitignore文件,添加文件,然後恢復了gitignore的另一種方式。有點哈克我覺得

+0

我同意,這不是你想要做的。 – Merlin

相關問題