undo git update-index –assume-unchanged <file>

你git忽略观看/跟踪特定的目录/文件的方式。 你只需运行这个:

git update-index --assume-unchanged <file>

现在你如何撤消它,以便再次观看? (让我们不要假设)

要取消/ show dir的/文件设置为承担 – 不变运行这个

git update-index --no-assume-unchanged <file>

要得到assume-unchanged的dir /文件列表,请执行以下操作

git ls-files -v|grep '^h'

如果这是您经常使用的命令 – 您可能还想考虑为其设置别名。 添加到您的全球.gitconfig

 [alias] hide = update-index --assume-unchanged unhide = update-index --no-assume-unchanged 

把这个保存到你的.gitconfig ,你可以运行一个更干净的命令。

 git hide myfile.ext 

要么

 git unhide myfile.ext 

这个资源非常有帮助

git update-index函数有几个选项,你可以find键入如下:

 git update-index --help 

在这里你会发现各种选项 – 如何处理函数update-index。

[如果你不知道文件名]

 git update-index --really-refresh 

[如果你知道文件名]

 git update-index --no-assume-unchanged <file> 

将恢复所有在忽略列表中添加的文件。

 git update-index --assume-unchanged <file> 

我认为(heh)你的意思是 – --assume-unchanged ,因为我没有看到任何 – --assume-changedselect。 --assume-unchanged的倒数是--no-assume-unchanged

如果你想撤销所有应用的文件,并且任何状态都保持不变,不仅caching(git用小写字母标记),你可以使用下面的命令:

 git ls-files -v | grep '^[az]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged 
  1. git ls-files -v会打印所有文件的状态
  2. grep '^[az]'将过滤文件,并且只select假定不变
  3. cut -c 3-将删除状态并保留唯一的path,从第三个字符切到末尾
  4. tr '\012' '\000'会将换行符(\ 012)replace为零字符(\ 000)
  5. xargs -0 git update-index --no-assume-unchanged会将所有以零字符分隔的path传递给git update-index --no-assume-unchanged取消

添加到@adardesign的答案中,如果您想要将已经添加到assume-unchanged列表中的所有文件@adardesign重置为no-assume-unchanged ,则可以执行以下操作:

 git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true 

这将只删除从grep输出的两个字符,即"h " ,然后转义任何可能存在于文件名中的空格,最后|| true || true循环中的某些文件有错误,则|| true将防止命令过早终止。