为了账号安全,请及时绑定邮箱和手机立即绑定

git update-index - 在目录上保持不变

git update-index - 在目录上保持不变

Git
喵喔喔 2019-08-30 16:06:12
git 1.7.12我想将给定目录下的所有文件标记为假设未更改。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命令有效。什么不使用管道?不,我添加dir到.gitignore 是不够的。我需要将这些文件放在存储库中,但是需要在本地进行不需要的更改,以便用户可以进行拉取。
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-08-30
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

find来自GNU Findutils 的命令有一个-exec选项可以消除大部分使用麻烦xargs,虽然它的语法有点特殊。但它确实与带有空格的文件名完美匹配。


这个命令将让git假设所列目录中和下面的所有文件都保持不变:


find path/to/dir -type f -exec git update-index --assume-unchanged '{}' \;

查找接受每个参数,-exec直到;(你必须逃脱,以免你的shell吃掉它)并为找到的每个文件运行一次,同时用{}找到的文件名替换(再次,单引号,这样你的shell不会吃它)。


使用find匹配条件(最大递归深度,匹配是文件还是目录,文件名是否与表达式匹配),-exec你可以做各种有力的事情。


不确定该find命令的其他实现。因人而异。


查看完整回答
反对 回复 2019-08-30
?
互换的青春

TA贡献1797条经验 获得超6个赞

添加目录名称.git/info/exclude。这适用于未跟踪的文件。


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 1519 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信