递归git update-index --assume-unchanged

时间:2013-05-02 19:50:40

标签: git gitignore

我正在尝试运行以下内容:

git update-index --assume-unchanged myFolderToIgnore

myFolderToIgnore是一个文件夹。但它没有说它“无法标记”它。

所以我试过了:

git update-index --assume-unchanged myFolderToIgnore/

哪个GIT使用Ignoring path myFolderToIgnore/回复,但没有做任何事情(它仍会看到我的更改并尝试检查它们)。

最后,我必须进入并手动将每个文件标记为未更改。我在这里缺少什么?

2 个答案:

答案 0 :(得分:60)

update-index是一个内部管道命令,因此不如真正的前端命令那么舒服。你必须自己处理递归:

git ls-files -z myFolderToIgnore/ | xargs -0 git update-index --assume-unchanged

答案 1 :(得分:1)

我遇到了这个问题,我的文件夹中有数十万个文件和数千个文件夹。

这导致"参数列表太长"。

以下解决方案将为每个文件夹运行命令并遍历这些文件夹中的内容。因此,只要您的数十万个文件在文件夹中分开,那么这将起作用。

find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --assume-unchanged" \;