一尘不染

git update-index --assume-unchanged 对目录

git

git 1.7.12

我想将给定目录下的所有文件标记为假设不变。

  1. git update-index --assume-unchanged dir/给出“忽略路径”。
  2. git update-index --assume-unchanged dir/*很快失败,因为它会遇到未被跟踪的文件,因此它给出“致命:无法标记文件”并退出。
  3. 尝试生成要标记的文件列表。 cd进入所需目录,然后运行git ls-files | tr '\n' ' ' | git update-index --assume-unchanged. 这不会产生错误消息,但不会成功标记文件。命令的第一部分git ls-files | tr '\n' ' '正确地生成了一个空格分隔的列表,其中包含我要标记的所有文件。如果我将该命令的输出复制并粘贴到命令行,则该git update-index命令有效。什么是管道不工作?

dir不,我添加到 .gitignore是不够的。我需要将这些文件放在存储库中,但是会在本地进行不需要的更改,这些更改需要被忽略,以便用户可以进行拉取。


阅读 86

收藏
2022-07-29

共1个答案

一尘不染

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运行这些命令

2022-07-29