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
-
git ls-files -v会打印所有文件的状态 -
grep '^[az]'将过滤文件,并且只select假定不变 -
cut -c 3-将删除状态并保留唯一的path,从第三个字符切到末尾 -
tr '\012' '\000'会将换行符(\ 012)replace为零字符(\ 000) -
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将防止命令过早终止。