git update-index --assume-unchanged 目录

标签 git command-line pipe

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 是不够的。我需要将这些文件放在存储库中,但将在本地进行不需要的更改,需要忽略这些更改,以便用户可以进行 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/

相关文章:

python - Groovy 脚本无法执行外部进程

bash - 如何将输出重定向到文件和 STDOUT 并在出错时退出

c - 父子进程中的管道、 fork 和​​轮询

c - 使用 Pipes 和 exec() 来控制另一个控制台应用程序

Android Studio - 从本地创建远程分支

git 创建以 ~? 结尾的文件

git - 如何使用 git 推送到我网站上的特定文件夹?

git - git-flow 是否应该在 master 上看到比开发更压缩的历史记录?

javascript - Adobe Air 使用硬编码的 filePath,但在通过命令行指定 filePath 时失败

android - monkeyrunner 导入操作系统数组索引outofbounds异常