由于外部奇怪的约束,我无法修改.gitignore
我的存储库.有没有办法忽略文件和目录,而不是修改.gitignore
?即使它是全局配置的全局解决方案,也将应用于我的所有存储库.
根据gitignore的说法,不要忘记Git认为不同的"忽略模式源"中存在优先顺序:
从命令行读取的模式用于支持它们的那些命令.
从与路径相同的目录中的.gitignore文件读取的模式,或在任何父目录中读取的模式,较高级别文件(直到根目录)中的模式被较低级别文件中的模式覆盖到包含该文件的目录.
模式读取$GIT_DIR/info/exclude
.
模式从配置变量指定的文件中读取core.excludesfile
.
最后两个可以解决您的问题但是:
它们不会被复制到远程存储库中
他们可以让他们的模式被其他来源所覆盖
(另见这个问题)
另外两个解决方案涉及更新索引(git update-index
):
git update-index --assume-unchanged
:请参阅" Git:仅在本地仓库中删除文件并将其保存在远程仓库中 ".Elijah Lynn在评论中
提到了这一点.
您甚至可以忽略文件夹内容:" git update-index --assume-unchanged
在目录上 ".
使用--no-assume-unchange
扭转效果:请参阅" 是否可以git add
当前保护的文件assume-unchanged
? ".
但是,当您签出另一个分支或您时git pull
,可能会重置"忽略"状态.因此另一种选择:
git update-index --skip-worktree
; 看到:
" 忽略我在文件中的更改,但不要从远程代表中删除它们 "和
" 在分支机构检查之间保留git --assume-unchanged文件 ".
两者之间的区别在" Git - assume-unchanged
'和' skip-worktree
' 之间的区别"中解释.
如果你可以修改,.git/info/exclude
你可以在那里使用相同的规则.但该文件仅在您的本地仓库中.
有三种方法可以告诉GIT要忽略哪些文件:
.gitignore文件
$ GIT_DIR/git的/信息/排除
通过.gitignore
设置指向的文件
后两点可以解决你的问题.
有关详细信息,请参阅gitignore(5).