簡體   English   中英

從本地存儲庫中刪除目錄而不影響遠程存儲庫-使git忽略目錄

[英]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>

在字母不重要的地方,只有大小寫(小寫表示忽略,大寫表示不忽略)。

git-ls-files文件說:

-v與-t相似,但是對於標記為未假定的文件,請使用小寫字母(請參見git-update-index [1])。

因此可以自動執行忽略操作。

暫無
暫無

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

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