在我的工作树中,.gitignore 中有混合文件:
如果我想从头开始重建我的项目,我可以执行
git clean -x
删除 (1) 中的构建输出。但这也删除了 (2) 中的敏感文件。
有没有办法标记文件,使其不受
git clean
的影响,同时仍被 git commit
忽略?
看一下 @Borealid 的这个答案到问题 Git - ‘assume-unchanged’ 和 ‘skip-worktree’ 之间的区别。
看起来使用skip-worktree
标志是解决我的问题的好方法。我通过寻找我的问题的答案来解决你的问题,我认为它们本质上是同一个问题。但是,使用
skip-worktree
标志,在执行某些操作时仍然需要注意,并且文件已在本地或远程发生更改。 在了解
skip-worktree
标志之前,我能想到的最佳解决方案是使用
.gitignore
加上
git clean
的别名的组合。这有点麻烦,但如果您唯一的选择是使用
git clean
的排除选项,那么这可能会有所帮助。
myusername.
添加到文件名的开头。
git clean -dx --exclude=myusername.*
(为此创建别名)。
myusername.
开头的文件复制到不带
myusername.
的文件。
都会被清理,但是您可以通过运行脚本来恢复它们。另外,将具有真实文件名的文件视为只读。始终使用混乱的文件名编辑文件,然后运行脚本。 将这些组合起来也可能有助于缓解使用
skip-worktree
标志时的边缘情况。