我已经多次阅读了有关此文档的文档,但仍然没有完全理解这些不同命令之间的区别。也许只有我一个人,但是文档可能更加清晰:
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文件仍然推?如果没有,如何管理已编译文件的最终部署?
在此先感谢您的帮助。