[英]Removing a directory from local Repository without affecting remote repository - Make git ignore the directory
假設我具有以下目錄結構
DirA (git Repository)
|_DirB
|_DirC
|_DirD
|_DirE
|_DirF
我目前有我的git Repository到上面的東西。
我存儲庫中的所有內容均已推送。現在,我想刪除文件夾DirF
。 我想刪除該文件夾而不用git告訴我已經進行了更改並且該文件夾的文件不存在,我只是想告訴git忽略或停止跟蹤該文件夾及其內容。 我嘗試了幾件事,但是由於無法完成此任務,我可能做錯了什么。 這是我到目前為止嘗試過的兩件事
Attempt:1
git update-index --assume-unchanged DirA/DirD/DirF
fatal: Unable to mark file DirD/DirF
然后,我嘗試將.gitignore放置在DirD
包含DirF/
。 但是,這似乎不起作用。 有什么建議么。 當前正在跟蹤文件夾DirF,並將其推入存儲庫。
--assume-unchaged不適用於目錄,但應適用於文件。 您應該在DirF中的所有文件上使用它。
我將擴展@DDoSolitary的出色答案。
實際上,當設置為忽略時,可以在刪除文件之前使用find
迭代文件:
find ./DirD/DirF -type f -name "*" \
-exec git update-index --assume-unchanged {} \;
-exec rm {} \;
注冊,然后刪除每個。
回到另一種方式,即使文件不再被忽略,因為文件不是文件,所以不能使用find
。
但是, git-update-index doc說:
要查看設置了“假定未更改”位的文件,請使用:(請參閱git-ls-files [1])。
git ls-files -v
導致一些線
H <not ignored file including path>
h <ignored file including path>
在字母不重要的地方,只有大小寫(小寫表示忽略,大寫表示不忽略)。
-v與-t相似,但是對於標記為未假定的文件,請使用小寫字母(請參見git-update-index [1])。
因此可以自動執行忽略操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.