备注: 这里记录一些复杂的或者有意义的git命令
本地更改不上传使用skip-worktree
skip-worktree assume-unchanged
背景:我对不想提交到存储库的文件进行了本地更改。 它是用于在服务器上构建应用程序的配置文件,但我想使用不同的设置在本地构建。 自然,当我将“git status”作为要暂存的内容时,该文件总是会显示出来。 我想隐藏这个特定的更改而不是提交它。 我不会对文件进行任何其他更改。澄清一下,使用 .gitignore 不是我想要的,因为这只会阻止添加新文件。 我想忽略对存储库中已有文件的更改。经过一番挖掘,我看到了 2 个选项: assume-unchanged和skip-worktree 。 以前的问题在这里谈到了它们,但并没有真正解释它们的区别。
命令:
git update-index --skip-worktree changedfile.txt
git update-index --no-skip-worktree changedfile.txt
git ls-files -v | grep '^S\ 'git update-index --assume-unchanged Constants.java //忽略跟踪
git update-index --no-assume-unchanged Constants.java //恢复跟踪
git ls-files -v | grep '^h\ ' //查看那些被忽略
git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged //取消所有被忽略注意事项:使用skip-worktree,远程服务器改动pull 不会被覆盖,而assume-unchanged需要重新标记,assume-unchanged 用在(此选项专门用于检查某些文件是否已被修改的资源密集型用例。 例如,为了优化慢速文件系统上的资源使用,git 不会检查文件以查看有问题的文件是否已更改,它假定工作目录中的文件没有被修改。 每当索引中的文件条目发生更改时,此标志就会丢失。
)