假设我有以下目录结构
DirA (git Repository)
|_DirB
|_DirC
|_DirD
|_DirE
|_DirF
我目前有我的git Repository看起来像Above
我的存储库中的所有内容都已被推高。现在我想删除文件夹DirF
。我想删除这个文件夹,没有git告诉我已经进行了更改,并且该文件夹的文件不存在。我只想告诉git忽略或停止跟踪此文件夹及其内容。我已经尝试了几件事,但是我可能做错了,因为我无法完成这项任务。这是我到目前为止尝试的两件事
Attempt:1
git update-index --assume-unchanged DirA/DirD/DirF
fatal: Unable to mark file DirD/DirF
然后我尝试在DirD
中放置一个.gitignore,其中只有DirF/
。然而,这似乎不起作用。
有什么建议。目前正在跟踪文件夹DirF并将其推送到存储库。
答案 0 :(得分:1)
- 假设未标记的内容不适用于目录,但应该适用于文件。你应该在DirF中的所有文件上使用它。
答案 1 :(得分:1)
我扩展了@DDoSolitary的出色答案。
实际上,当设置为忽略时,可以在删除文件之前使用find
来迭代文件:
find ./DirD/DirF -type f -name "*" \
-exec git update-index --assume-unchanged {} \;
-exec rm {} \;
注册,然后删除每个。
采用另一种方法,使文件不再被忽略,不能使用find
,因为文件不是文件。
要查看哪些文件设置了“假定不变”位,请使用: (请参阅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])。
因此可以自动执行忽略操作。