我已经多次阅读了有关此文档的文档,但仍然没有完全理解这些不同命令之间的区别。也许只有我一个人,但是文档可能更加清晰:
http://git-scm.com/docs/gitignore
https://help.github.com/articles/ignoring-files
此外,许多关于该主题的评论似乎在某种程度上松散地使用了“索引”,“提交”,“跟踪”这两个词,这使得这三个之间的区别不太清楚。
我目前的(公认的有限)理解:
以后.gitignore将不再跟踪匹配的文件。(尽管它们可能以前已被跟踪。)这意味着它们永远不会在git status更改后出现在将来的列表中。 但是,将来的更改仍将与远程存储库同步。换句话说,文件仍然是“索引”的,但它们不是“跟踪”的。由于.gitignore文件位于项目目录中,因此可以对文件本身进行版本控制。
匹配的文件.git/info/exclude也不会被“跟踪”。此外,这些文件将永远不会被远程同步,因此任何其他用户都不会以任何形式看到它们。这些文件应该是特定于单个用户的编辑器或工作流程的文件。由于它位于.git 目录中,因此exclude文件本身无法版本控制。
assume-unchanged在其上运行过的文件也不会显示在git status或中git diff。这似乎与相似exclude,因为这些文件既没有“建立索引”也没有“跟踪”。但是,之前要提交的文件的最新版本将对存储库assume-unchanged中的所有用户可见。
我的问题:
以上解释正确吗?请纠正我。
如果文件已经在提交,什么是它匹配之间的功能不同的.exclude运行 assume-unchanged就可以了?为什么一个人会偏爱一种方法?
我的基本用例是,我想避免对已编译文件的差异进行排序,但是我仍然希望那些已编译文件与源文件同步。将一个gitignore“d文件仍然推?如果没有,如何管理已编译文件的最终部署?
在此先感谢您的帮助。
慕神8447489
动漫人物