我有点困惑于使用.git/info/exclude
和.gitignore
排除文件的优缺点。
它们都在仓库/项目级别上,所以它们有何不同,我们何时应该使用.git/info/exclude
?
.gitignore
的第一个优点是它被纳入到版本库中,不像.git/info/exclude
。第二个优点是你可以有多个.gitignore
文件,每个目录/子目录一个,用于特定目录的忽略规则,而.git/info/exclude
则不行。.gitignore
文件是版本化的,并存在于所有副本中。因此,在大型团队中,所有人都会忽略相同类型的文件(例如*.db
、*.log
);而使用几个.gitignore
文件可以允许更具体的忽略规则。.git/info/exclude
仅适用于单个副本。它没有被版本化,因此在一个人的副本中忽略的内容在另一个人的副本中并不存在。例如,如果有人使用Eclipse进行开发,那么该开发人员可能会将.build
文件夹添加到.git/info/exclude
中,因为其他开发人员可能不使用Eclipse。.gitignore
中,而只想在本地副本中忽略的文件应该放在.git/info/exclude
中。谷歌搜索:三种排除文件的方法
.gitignore
适用于这个代码库的每个克隆版本(版本控制,每个人都会有它),.git/info/exclude
仅适用于您本地副本的这个代码库(本地,不与他人共享),~/.gitignore
适用于您电脑上所有的代码库(本地,不与他人共享)。3.
实际上需要在您的计算机上设置一个配置:
git config --global core.excludesfile '~/.gitignore'
.git/info/excludes
,而实际上应该是.git/info/exclude
,这一点已经被它所链接到的文档确认过了。 - mwfearnleygit update-index --assume-unchanged ...
。它适用于已经在代码库中的文件。 - TWiStErRob我们想分享一下(现实生活中的)经验:当我们需要在每个开发环境上自定义一些配置文件,但仍希望源代码被保留在仓库中并可供其他开发人员使用时,我们开始使用.git/info/exclude。
这样,一旦克隆和修改本地文件后,可以将其从提交中排除,而不会影响仓库中的原始文件,但也不一定被忽略。
.gitignore
来忽略与项目有关的规则。使用exclude
或全局忽略文件来忽略与您的环境有关的规则。.gitignore
文件会忽略诸如API密钥和构建工件之类的东西 - 这些是为项目而设计的,应该对项目中的每个人都相同。
~/.gitignore
中。我的理解是忽略规则可以分为3个级别 -$PROJECT/.git/info/exclude
用于(项目、用户)特定的忽略规则,$PROJECT/<任意数量的目录>/.gitignore
用于项目特定的忽略规则,适用于任何地方的用户(提交时),~/.gitignore
用于用户特定的忽略规则,适用于该用户在该机器上的任何项目。根据目标,您选择将条目放在哪个位置。 - Anshul Goyalgit rm --cached <path-name>
可以将其从仓库中删除,但在本地保留。git update-index --skip-worktree <path-name>
将忽略对文件的更改,但仍然保留在仓库中。好奇一下:为什么要将sln文件排除在外?它是.Net解决方案的重要部分,对吧? - Koen