git 1.7.12
我想将给定目录下的所有文件标记为假设未更改。
git update-index --assume-unchanged dir/
给出“忽略路径”。git update-index --assume-unchanged dir/*
很快就会失败,因为它会遇到未被跟踪的文件,因此它给出“致命:无法标记文件”和退出。尝试生成要标记的文件列表。
cd
进入所需的目录,然后运行 git ls-files | tr '\n' ' ' | git update-index --assume-unchanged
.这不会产生错误消息,但不会成功标记文件。命令的第一部分,git ls-files | tr '\n' ' '
,正确生成我要标记的所有文件的空格分隔列表。如果我将该命令的输出复制并粘贴到命令行,则git update-index
命令可以工作。什么不适用于管道?
不,我将 dir
添加到 .gitignore 是不够的。我需要将这些文件放在存储库中,但将在本地进行不需要的更改,需要忽略这些更改,以便用户可以进行 pull 。
最佳答案
git update-index
希望文件名出现在命令行上,而不是标准输入上。
第 1 步:
cd
进入你想假设没有改变的文件夹
第 2 步:
你可以这样做:
git update-index --assume-unchanged $(git ls-files | tr '\n' ' ')
或
git ls-files | tr '\n' ' ' | xargs git update-index --assume-unchanged
虽然,无论哪种情况,带空格的文件名都会有问题。如果你有这些,你可以使用这个:
git ls-files -z | xargs -0 git update-index --assume-unchanged
编辑: merge 了@MatthewScharley 关于git ls-files -z
的输入。
Windows 命令
Note: If you're on windows, use Git Bash to run these commands
关于git update-index --assume-unchanged 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12288212/