为什么要使用 .gitignore?为什么我不需要包含某些文件?
Why use .gitignore? And why do I need to not include certain files?
互联网上的每个地方都说 "this is how you set up your .gitignore." "You want to have one so you can ignore files." "Blah Blah Blah." 但我的问题是 "Why?" 为什么我不需要包含回购协议中的某些文件?我知道您不希望其中包含敏感信息的文件,但是生成的文件呢?据说我们忽略的其他一些类型的文件呢?我知道这是我们应该做的事情...但是为什么呢?
您项目中的一些文件是您的环境所特有的,通常由您的编辑器生成。
而且它们最好不要被跟踪,因为你的存储库会更小,只有对你的项目有意义的文件,你将不得不处理更少的合并冲突,因为这些文件通常会随着环境的不同而变化。
通常,您不会想要派生和中间编译工件,例如 .obj
、pre-compiled headers、版本控制且易于下载的第 3 方二进制文件、单元测试输出垃圾,有时编译的二进制文件本身也会弄乱您的存储库。其他要排除的常见文件是 per-developer 配置和首选项文件,例如IDE 环境主题和快捷方式首选项。
如果您签入所有实际源代码,您可以随时重建任何版本,因此不签入这些不会丢失任何有价值的东西。也可以说二进制文件不是第一个 class 版本控制系统中的公民,鉴于无法对这些进行视觉差异。
大多数常见语言/环境设置都有标准的预配置 .gitignore
设置 here
您希望存储库跟踪您所做的工作。提交应该反映您的手动更改,查看补丁历史应该让其他人了解更改的内容和原因。
如果您要在存储库中包含所有自动生成的文件,您的提交会因自动生成文件的更改而变得杂乱无章,从而难以理解实际更改是什么,从而降低了整体效用使用版本控制系统。
最佳做法是避免通过简单地构建项目生成任何文件。如果您正在从事大型项目,为什么每个开发人员的每个分支都应该包含构建项目所不需要的文件?这意味着如果你有合并冲突,你通常会有两次,你看不到什么已经正确改变等等。你想保持你的提交尽可能干净,只是为了保持顺序并避免在推拉时发生冲突.
但这只有在团队合作项目时才有意义。
互联网上的每个地方都说 "this is how you set up your .gitignore." "You want to have one so you can ignore files." "Blah Blah Blah." 但我的问题是 "Why?" 为什么我不需要包含回购协议中的某些文件?我知道您不希望其中包含敏感信息的文件,但是生成的文件呢?据说我们忽略的其他一些类型的文件呢?我知道这是我们应该做的事情...但是为什么呢?
您项目中的一些文件是您的环境所特有的,通常由您的编辑器生成。 而且它们最好不要被跟踪,因为你的存储库会更小,只有对你的项目有意义的文件,你将不得不处理更少的合并冲突,因为这些文件通常会随着环境的不同而变化。
通常,您不会想要派生和中间编译工件,例如 .obj
、pre-compiled headers、版本控制且易于下载的第 3 方二进制文件、单元测试输出垃圾,有时编译的二进制文件本身也会弄乱您的存储库。其他要排除的常见文件是 per-developer 配置和首选项文件,例如IDE 环境主题和快捷方式首选项。
如果您签入所有实际源代码,您可以随时重建任何版本,因此不签入这些不会丢失任何有价值的东西。也可以说二进制文件不是第一个 class 版本控制系统中的公民,鉴于无法对这些进行视觉差异。
大多数常见语言/环境设置都有标准的预配置 .gitignore
设置 here
您希望存储库跟踪您所做的工作。提交应该反映您的手动更改,查看补丁历史应该让其他人了解更改的内容和原因。
如果您要在存储库中包含所有自动生成的文件,您的提交会因自动生成文件的更改而变得杂乱无章,从而难以理解实际更改是什么,从而降低了整体效用使用版本控制系统。
最佳做法是避免通过简单地构建项目生成任何文件。如果您正在从事大型项目,为什么每个开发人员的每个分支都应该包含构建项目所不需要的文件?这意味着如果你有合并冲突,你通常会有两次,你看不到什么已经正确改变等等。你想保持你的提交尽可能干净,只是为了保持顺序并避免在推拉时发生冲突.
但这只有在团队合作项目时才有意义。