remove - gitignore目錄




如何停止跟踪並忽略Git中文件的更改? (9)

忘了你的.gitignore?

如果你有整個項目在本地,但忘了添加你git忽略,現在正在跟踪一些不必要的文件使用此命令刪除所有內容

git rm --cached -r .

確保你是項目的根源。

然後你可以照常做

git add .

承諾

git commit -m 'removed all and added with git ignore'

git push origin master

結論

希望這有助於那些不得不改變他們的.gitignore或者把它們一起忘掉的人。

  • 它會刪除整個緩存
  • 看你的.gitignore
  • 添加要跟踪的文件
  • 推到你的回購

我克隆了一個包含一些.csproj文件的項目。 我不需要/喜歡我的本地csproj文件被Git跟踪(或者在創建補丁時被調出),但顯然它們在項目中是需要的。

我已將*.csproj添加到我的本地.gitignore ,但這些文件已存在於回購站中。

當我輸入git status時,它會顯示我對csproj更改,而我不希望跟踪或提交補丁程序。

如何從個人回購中刪除這些文件的“跟踪”(但將它們保存在源代碼中以便我可以使用它們),以便在執行狀態(或創建修補程序)時看不到更改?

有沒有一種正確的/規範的方式來處理這種情況?


有3個選項,你可能想要#3

1.這會為你保留本地文件,但會在其他人拉下時刪除它。

git rm --cached <file-name>git rm -r --cached <folder-name>

2.這是為了優化,就像一個包含大量文件的文件夾,例如可能永遠不會改變的SDK。 它告訴git每次更改時都不再檢查那個大文件夾,因為它沒有任何更改。

git update-index --assume-unchanged <path-name>

這是告訴git你想要你自己的獨立版本的文件或文件夾。 例如,您不想覆蓋(或刪除)生產/登台配置文件。

git update-index --skip-worktree <path-name>

知道git update-index 不會隨git 傳播很重要,每個用戶都必須獨立運行它。


問題可能是由操作順序造成的。 如果你先修改.gitignore,然後git rm --cached xxx,那麼你可能不得不繼續遇到這個問題。

正確的解決方案:

  1. git rm --cached xxx
  2. 修改.gitignore

順序不變!

.gitignore修改後重新加載!


如果你使用git update-index --assume-unchanged file.csproj ,git將不會自動檢查file.csproj是否有變化:只要你改變它們,git狀態就會停止。 所以你可以用這種方式標記所有的.csproj文件 - 儘管你必須手動標記上游回購給你發送的新文件。 (如果你的.gitignore.git/info/exclude有他們,那麼你創建的將被忽略)

我不完全確定.csproj文件是什麼......如果它們是沿著IDE配置行的東西(類似於Eclipse的.eclipse和.classpath文件),那麼我建議他們應該根本不用源代碼控制所有。 另一方面,如果他們是構建系統的一部分(比如Makefiles),那麼顯然他們應該 - 以及選擇可選的本地更改(例如從local.csproj a la config.mk)的方法將是有用的:將構建分為全球部分和本地覆蓋。


我假設你問的是如何刪除特定文件夾或bin文件夾中的所有文件,而不是單獨選擇每個文件。

你可以使用這個命令:

git rm -r -f /<floder-name>\*

確保您位於該目錄的父目錄中。
該命令將遞歸地“刪除”bin /或build /文件夾中的所有文件。 通過刪除這個詞,我的意思是git會假裝這些文件被“刪除”,這些文件將不會被跟踪。 git確實將這些文件標記為刪除模式。

確保你的.gitignore準備好了即將到來的提交。
文檔:git rm


我假設你正試圖從git中刪除單個文件。 為此,我會建議下面的命令。

git update-index --assume-unchanged

Ex - git update-index --assume-unchanged .gitignore .idea / compiler.xml


正如在其他答案中指出的那樣,所選的答案是錯誤的。

對另一個問題的answer表明,它可能是需要的跳過工作樹。

git update-index --skip-worktree <file>

為了節省一些時間,您添加到.gitignore的規則可用於刪除多個文件/文件夾,即

git rm --cached app/**/*.xml

要么

git rm --cached -r app/widgets/yourfolder/

等等


防止通過git監視文件

git update-index --assume-unchanged [file-path]

並將其恢復使用

git update-index --no-assume-unchanged [file-path]




git