1.7.12的git
我想,以纪念一个给定的目录作为假设 - 不变下的所有文件。
1) git update-index --assume-unchaged dir/
给出“忽略路径”。
2) git update-index --assume-unchaged dir/*
很快失败,因为它会遇到哪些没有被跟踪的文件,因此它提供了“致命的:无法标记文件”并退出。
3)尝试生成的文件标记列表。 cd
到所需的目录,然后运行git ls-files | tr '\n' ' ' | git update-index --assume-unchanged
git ls-files | tr '\n' ' ' | git update-index --assume-unchanged
git ls-files | tr '\n' ' ' | git update-index --assume-unchanged
。 这会产生错误消息,但没有成功标记文件。 该命令的第一部分, git ls-files | tr '\n' ' '
git ls-files | tr '\n' ' '
,正常生产的所有我想要标记的文件的空间分隔的列表。 如果我复制和该命令的输出粘贴到命令行,然后git update-index
命令的作品。 什么是不与管工作?
不,这是不够的我补充dir
到的.gitignore。 我需要这些文件是在资源库,但不期望的改变将在当地做需要被忽略,以便用户可以做拉。
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
编辑:从@MatthewScharley关于纳入输入git ls-files -z
。
Windows命令
注:如果您使用的是Windows,使用git的Bash运行这些命令
该find
来自GNU查找工具组命令有一个-exec
选项,去除大部分使用的麻烦xargs
,尽管它的语法有点特殊。 但它确实很好用空格的文件名处理。
该命令将得到GIT中承担与上市目录下是不变的所有文件:
find path/to/dir -type f -exec git update-index --assume-unchanged '{}' \;
查找后需要每个参数-exec
直到;
(你必须逃离,以免你的shell吃它),并运行它一次找到的每个文件,而代替{}
与找到的文件名(再次,单引号这样你的shell不会吃它)。
使用find
的匹配标准(最大递归深度,这场比赛是否是一个文件或者是目录,文件名是否表达式匹配)和-exec
你可以做所有种类的强大的东西。
不知道有关的其他实现find
命令。 因人而异。
添加目录名.git/info/exclude
。 这适用于未跟踪文件。
叶氏,
git update-index --assume-unchanged
只有不与目录中的文件工作。 我认为,更快的方式之一:
cd dir
ls | xargs -l git update-index --assume-unchanged