要忽略目录中所有文件(某种类型)的任何更改,我必须结合使用其中一些方法,否则,如果以前不存在这些文件,则会创建这些文件。
在下面,“ excludedir”是我不希望监视更改的目录的名称。
首先,从更改跟踪缓存中删除所有现有的新文件(而不从文件系统中删除)。
git status | grep "new file:" | cut --complement -d " " -f1-4 | grep "^excludedir" | xargs git rm --cache
您可以使用进行相同的操作modified:
。 renamed:
有点复杂,因为您必须查看->
新文件名的post 位,并按以下说明进行pre ->
位deleted:
。
deleted:
文件证明更加复杂,因为您似乎无法为本地系统上不存在的文件更新索引
echo .deletedfiles >> .gitignore
git status | grep "deleted:" | cut --complement -d " " -f1-4 | grep "^excludedir" > .deletedfiles
cat .deletedfiles | xargs -d '\n' touch
cat .deletedfiles | xargs -d '\n' git add -f
cat .deletedfiles | xargs -d '\n' git update-index --assume-unchanged
cat .deletedfiles | xargs -d '\n' rm
上面列表中的最后一个命令将再次从文件系统中删除文件,因此可以忽略它。
然后,阻止该目录中的更改跟踪
git ls-files excludedir/ | xargs git update-index --skip-worktree
git update index --skip-worktree excludedir/
.csproj
文件的更改,这在任何项目中都非常重要。对.csproj.user
文件或任何.Publish.XML
我完全理解不跟踪的文件的更改,但是令您感兴趣的是,为什么您不想跟踪.csproj
……