似乎我有一個問題,即.gitignore在我們的開發分支上添加了一個檔案夾“Resources/”,而另一個開發人員錯誤地將檔案提交到功能分支中的該檔案夾(關閉開發)。當功能分支合并到開發分支時,它添加了檔案,然后停止跟蹤檔案夾,現在認為“/Resources”和其中的檔案不存在,因為它們不應該存在。
但是,正如我從克隆分支和切換到開發中看到的那樣,我們現在遇到的問題是 Resources/ 下載中的檔案,因為它們是在 git 中添加的,但沒有被洗掉。
我最初的想法是從檔案中洗掉“/Resources” .gitingore,然后洗掉這些檔案。但是,如果我嘗試從中洗掉“/Resources”檔案夾.gitignore,git 認為它們是新的,并嘗試添加檔案夾和添加的檔案。
編輯:我嘗試使用git filter-branch,正如其他帖子所提到的,但我收到一條錯誤訊息“致命:錯誤修訂版 'rm'”
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch Resources/' --prune-empty --tag-name-filter cat -- --all
有沒有辦法從被忽略的目錄中洗掉檔案?
uj5u.com熱心網友回復:
您可以添加一個確認檔案夾洗掉的提交Resource/,同時保持它被忽略:
git rm -r --cached Resources/
git commit -m "Delete Resources content, now ignored"
git push
如果我們洗掉檔案,git 中就沒有跟蹤更改。
是的,這就是添加Resources/到.gitignore.
目前,每次有人克隆存盤庫時,他們都必須手動洗掉檔案
他們不會因為Resources/不再跟蹤(并且可以在本地重新創建)
如果該檔案夾已被洗掉,則開發人員不必手動洗掉任何內容:本地檔案將被忽略。
如果您需要從所有提交中洗掉資源:
- 安裝
git filter-repo(基于python的工具) - 使用“基于路徑的過濾(另見
--filename-callback) ”
uj5u.com熱心網友回復:
當功能分支合并到開發分支時,它添加了檔案,然后停止跟蹤檔案夾,現在認為“/Resources”和其中的檔案不存在,因為它們不應該存在。
.gitignore在檢查新檔案以進行跟蹤時使用,無論您在該檔案中寫入什么內容,您手動提交的檔案都將繼續被跟蹤。所以上面的句子沒有任何意義,我相信你知道,因為稍后你會寫:
但是,正如我從克隆分支和切換到開發中看到的那樣,我們現在遇到的問題是 Resources/ 下載中的檔案,因為它們是在 git 中添加的,但沒有被洗掉。
正確,這些檔案已經是存盤庫的一部分。
有沒有辦法從被忽略的目錄中洗掉檔案?
是的,git rm -r --cached將進行檔案洗掉,然后您可以提交git commit并使用git push. 從存盤庫中洗掉檔案后,.gitignore將再次接管,并且下次不會自動暫存檔案(但仍可以手動暫存它們)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/461837.html
下一篇:分配記憶體引導加載程式/程式集
