ada*_*ign 426 git version-control git-index
你Git忽略观察/跟踪特定目录/文件的方式.你刚刚运行这个:
git update-index --assume-unchanged <file>
现在你如何撤消它,以便再次观看它们?(我们称之为取消.)
ada*_*ign 542
要获取设置为假定未更改的undo/show目录/文件,请执行以下操作:
git update-index --no-assume-unchanged <file>
要获取assume-unchanged运行此目录的dir /文件列表:
git ls-files -v|grep '^h'
ads*_*ork 90
如果这是您经常使用的命令 - 您可能也想考虑为它添加别名.添加到您的全球.gitconfig:
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
Run Code Online (Sandbox Code Playgroud)
将此保存到您的后.gitconfig,您可以运行更干净的命令.
git config --configLocation alias.aliasName 'command --options'
Run Code Online (Sandbox Code Playgroud)
要么
git config --global alias.hide 'update-index --assume-unchanged'
git config... etc
Run Code Online (Sandbox Code Playgroud)
这个资源非常有用
Ank*_*rma 41
git update-index函数有几个选项你可以找到如下键入:
git update-index --help
Run Code Online (Sandbox Code Playgroud)
在这里,您将找到各种选项 - 如何使用函数update-index处理.
[如果你不知道文件名]
git update-index --really-refresh
Run Code Online (Sandbox Code Playgroud)
[如果你知道文件名]
git update-index --no-assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)
将还原所有已在忽略列表中添加的文件.
git update-index --assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)
hob*_*bbs 37
我认为(嘿)你的意思--assume-unchanged,因为我没有看到任何--assume-changed选择.倒数--assume-unchanged是--no-assume-unchanged.
Wil*_*ain 25
从@adardesign,@ adswebwork和@AnkitVishwakarma以及@Bdoserror和@Retsam的评论中综合出优秀的原始答案,附加文档链接和shell别名......
基本命令
git update-index --no-assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)
要列出所有那些假设未发生变化的文件:
git ls-files -v | grep '^[a-z]' | cut -c3-
Run Code Online (Sandbox Code Playgroud)
git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
Run Code Online (Sandbox Code Playgroud)
快捷键
为了使这些常见任务易于在git中执行,请.gitconfig为您的用户添加以下部分(例如~/.gitconfig,在*nix或macOS系统上):
git update-index --really-refresh
Run Code Online (Sandbox Code Playgroud)
为了便于执行列出在支持别名的shell (例如bash)中假定未更改的所有文件,请创建一个别名,例如:
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
unhide-all = ! git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
hidden = ! git ls-files -v | grep '^[a-z]' | cut -c3-
Run Code Online (Sandbox Code Playgroud)
对于没有别名的shell,脚本可以做到这一点.
C0D*_*F52 17
如果要撤消所有应用的文件,假定其状态不变,不仅缓存(git以小写字母标记它们),您可以使用以下命令:
git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
Run Code Online (Sandbox Code Playgroud)
git ls-files -v 将打印所有文件及其状态grep '^[a-z]' 将过滤文件并选择仅假设不变cut -c 3- 将删除状态并仅留下路径,从第3个字符切换到结尾tr '\012' '\000' 将行尾字符(\ 012)替换为零字符(\ 000)xargs -0 git update-index --no-assume-unchanged将所有以零字符分隔的路径传递git update-index --no-assume-unchanged给undosag*_*nms 11
添加@adardesign回答,如果要一次性重置已添加到assume-unchanged列表中的所有文件,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
Run Code Online (Sandbox Code Playgroud)
这将只删除grep输出的两个字符"h ",然后转义文件名中可能存在的任何空格,最后|| true防止命令在循环中的某些文件出错时过早终止.
如果您使用Git Extensions,请按照以下步骤操作:
你完成了。