递归的git更新索引--assume-不变(Recursive git update-index -

2019-09-01 19:12发布

我试图运行以下命令:

git update-index --assume-unchanged myFolderToIgnore

myFolderToIgnore是一个文件夹。 但是它不能说其“无法达标”了。

所以我想:

git update-index --assume-unchanged myFolderToIgnore/

其中GIT回应给Ignoring path myFolderToIgnore/但没有做任何事情(它仍然看到我的变化,并试图签入)。

最后,我不得不去和手动标记每个单独的文件视为不变。 我缺少的是在这里吗?

Answer 1:

update-index是一个内部管道命令,因此不一样舒适实前端命令。 你将不得不处理递归位自己:

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


Answer 2:

我就遇到了这个问题,在我的文件夹中有成百上千的文件中,文件夹数千人。

这导致“参数列表太长”。

以下解决方案将运行每个文件夹的命令和在这些文件夹遍历的内容。 所以,只要你的成百上千的文件的文件夹中是分开的,那么这将正常工作。

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


文章来源: Recursive git update-index --assume-unchanged
标签: git gitignore