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-changed
select。 --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
将防止命令过早终止。