git ignore vs. exclude vs assume-unchanged

我已经阅读了这个文档的几次,我仍然没有完全得到这些不同的命令之间的差异。也许这只是我,但文档可以更清晰:

http://git-scm.com/docs/gitignore

https://help.github.com/articles/ignoring-files

此外,很多关于这个问题的评论似乎使用“索引”,“承诺”,“跟踪”一些松散的词,这使得这三者之间的差异不太清楚。

我目前的(诚然有限)的理解:

>在.gitignore中匹配的文件将来不会被跟踪。
(虽然他们可能已经跟踪以前。)这意味着他们
将不会显示在未来git状态列表中更改。
然而,未来的变化仍然会与远程仓库同步。换句话说,文件仍然是“索引的”,但它们不是“跟踪”。
因为.gitignore文件在项目目录中,所以文件
本身可以进行版本化。
> .git / info / exclude中匹配的文件也不会被“跟踪”。在
此外,这些文件将永远不会远程同步,因此会
永远不会被任何其他用户以任何形式看到。这些文件应该是
特定于单个用户的编辑器或工作流。因为它是在.git
目录,排除文件本身不能被版本化。
>已经假定在其上运行的文件也不会显示在git status或git diff中。这似乎与排除类似,因为这些文件既不是“索引”也不是“跟踪”。但是,在提交之前提交的文件的最后一个版本保持不变,对repo中的所有用户仍然可见。

我的问题:

>上述解释是否正确?请纠正我。
>如果一个文件已经在提交,什么是功能
不同匹配之间在.exclude和运行
假设不变呢?为什么会喜欢一种方法
另一个?
>我的基本用例是,我想避免通过diffs排序
编译文件,但我仍然希望这些编译文件同步
与源文件。将gitignore的文件仍然推?如果没有,如何管理编译文件的最终部署?

先感谢任何帮助。

我将接受this emailed answer from Junio Hamano(Git的维护者),因为我认为它解释一些东西比官方文档更清晰,它可以被视为“官方”的建议:

The .gitignore and .git/info/exclude are the two UIs to invoke the
same mechanism. In-tree .gitignore are to be shared among project
members (i.e. everybody working on the project should consider the
paths that match the ignore pattern in there as cruft). On the other
hand, .git/info/exclude is meant for personal ignore patterns (i.e.
you, while working on the project, consider them as cruft).

Assume-unchanged should not be abused for an ignore mechanism. It is
“I know my filesystem operations are slow. I’ll promise Git that I
won’t change these paths by making them with that bit—that way, Git
does not have to check if I changed things in there every time I ask
for ‘git status’ output”. It does not mean anything other than that.
Especially, it is not a promise by Git that Git will always consider
these paths are unmodified—if Git can determine a path that is
marked as assume-unchanged has changed without incurring extra
lstat(2) cost, it reserves the right to report that the path
has been modified (as a result, “git commit -a” is free to commit that change).

http://stackoverflow.com/questions/23097368/git-ignore-vs-exclude-vs-assume-unchanged

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:git ignore vs. exclude vs assume-unchanged