簡體   English   中英

如何忽略git中的文件或目錄,無論是跟蹤,未跟蹤,還是部分提交

[英]How to ignore a file or directory in git, be it tracked, untracked or even part of commit

我想完全忽略git存儲庫的一部分。 該目錄當前在存儲庫中被跟蹤,我想確保這一點

  • 每當有人在上游存儲庫中更改其內容時,即使我的副本也被更改,我也不會遇到任何合並沖突。
  • 每當我更改其內容時,我所做的任何提交都不會反映這些更改

我並不特別關心實際內容。

在構建期間自動生成的文件會出現問題。 不幸的是,有人碰巧將它們提交到存儲庫,但是當它們在不同的機器上使用而不是它們的創建者時,它們會因為不同的路徑等而導致構建錯誤,從而導致討厭的合並沖突

AFAIK, .gitignore不會用於此目的,因為它僅適用於未跟蹤的文件。

您可以使用git rm輕松刪除和刪除文件,這似乎是您想要做的。 如果在構建過程中自動生成文件,這似乎是您要采用的路徑。

但是,如果只有一個人的機器設置正確生成這些文件,我相信存在更大的問題。 但要做你想做的事,就是這樣

開始忽略更改git update-index --assume-unchanged <dir>

再次開始關心git update-index --no-assume-unchanged <dir>

如果該文件永遠不會進入存儲庫,請修復問題並正確執行...

  1. 將文件/模式添加到.gitignore文件中
  2. 從存儲庫中刪除不需要的文件
  3. 承諾解開不需要的文件並提交.gitignore
  4. 推動變革

並且你永遠不必再次處理那些不需要的文件,因為.gitignore將避免將來git add這些文件(除非--force d)

上面的所有答案都無法處理 gitignoring和刪除不需要的文件之前已拆分的分支,並且包含對這些文件進行更改的提交。 這些分支機構只會坐在那里等待機會對合並或變革造成嚴重破壞。

實際上,除了從頭開始使用.gitignore中不需要的文件從頭開始重新創建所有repos之外,沒有其他解決方案。 在git中完全打破了非跟蹤內容。

Git無法模擬用戶沒有透視的簡單現實,並且顯然不知道什么樣的不跟蹤(臨時|中間|緩存|無論如何)將由一個甚至沒有的框架創建已編寫,但將在未來某個時候納入項目。

您可以在.gitignore文件的開頭嘗試以下行:

!.gitignore

我認為這應該強制git忽略列出的冷杉/文件。 我不知道這是最好的方式,但它適用於我的情況。 例如

!.gitignore
my_dir/
some_dir/

注意:當然你應該git add and commit .gitignore而不是push to origin。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM