3 回答
TA贡献1780条经验 获得超1个赞
我将接受Junio Hamano(Git的维护者)通过电子邮件发送的答复,因为我认为它比正式文档更清楚地解释了某些事情,并且可以被视为“官方”建议:
.gitignore和.git / info / exclude是调用相同机制的两个UI。树内.gitignore将在项目成员之间共享(即,每个在项目上工作的人都应将与其中的忽略模式匹配的路径视为无效的)。另一方面,.git / info / exclude用于个人忽略模式(即,您在从事项目工作时,将其视为杂项)。
假设不变的机制不应被滥用。这是“我知道我的文件系统操作很慢。我向Git保证,我不会通过使用该位来更改这些路径的方式-那样,Git不必每次检查是否在其中更改了内容我要求输出“ git status”。除此之外,它没有其他含义。特别是,Git 不能保证Git始终会认为这些路径是未修改的--如果Git可以确定标记为假定不变的路径已更改,而又不会产生额外的lstat(2)成本,则它保留以下权利:报告该路径 已被修改(因此,“ git commit -a”可以自由提交该更改)。
TA贡献1815条经验 获得超10个赞
希望不会有太多的信息源被松散地使用,索引和提交,因为它们都是不同的且有意义的。
已建立索引意味着该文件位于git索引中。在过去的某个时候,有人git add在文件上使用过或具有等效命令。该文件已被跟踪,也可能已提交。
已跟踪表示git正在监视文件中的更改。跟踪任何已提交的文件或索引中的任何文件。
提交意味着该文件在git的历史记录中。该文件至少有一个检查点。您可以还原到该文件的任何提交版本。
现在就我所知。我不确定这个定义,但这是我的理解;很高兴对此进行纠正:
提交索引文件后,该文件将不再在索引中。下次修改(或删除)时,它又回到索引中。 索引是与提交的所有跟踪文件的总和。
索引也称为缓存或暂存区。
关于您的主要问题。.git / info / exclude与.gitignore相同,只是优先级较低,不在存储库中(因此,未提交和共享)。都不会影响已经跟踪的文件。两者都会影响当前未跟踪的文件。在.gitignore之后git add或git commit为时已晚;git已经跟踪了文件,.gitignore不会对此产生影响。
假定未更改仅影响跟踪的文件,因此与.gitignore完全分开。它可以暂时假装该文件未跟踪并被忽略(但它不一定必须也不能与正常行为有所不同)。就像其他答案提到的那样,这并不是用来忽略对文件的更改,只是为了潜在地避免在慢速文件系统上进行文件系统操作。
回复:第3点:您不应将编译文件添加到git中。将文件编译到源所在的其他目录,然后忽略整个目录。将编译后的文件捆绑到一个库中,并将其添加到工件存储库中,但不要将其放入git中。
- 3 回答
- 0 关注
- 1282 浏览
添加回答
举报