不要把配置文件放到你的 Git 代码仓库

我总是惊讶地发现在一些私有的 git 仓库中缺乏管理。查看一个 git 仓库与之达成新的约定是我最恐惧的时刻之一。诚然,git 仓库中包含的文件应该是有个范围的。这可以优化开发和部署。

提交附加文件可显著提高下载(克隆一个仓库时)的时间,避开提交这些文件还有很多理由。非技术的发起人,可以使用这个原则作为指导,以确保你的团队是在聪明地提交代码。

编译后生成的文件/二进制文件

不要在一个 git 资源库中将你编译后生成的文件或者二进制文件包含进去!二进制文件 (或者可执行文件) 几乎总是将和操作系统相关的。如果你有一些开发使用 Mac 电脑,一些使用 Window,而一些使用 Linux —— 或者是这些操作系统的组合,那么这就会很令人头疼。甚至同一个操作系统的不同版本都有可能会造成问题。

此外,git 并不能很好的适用于二进制文件版本的比较。开发者要提交编译后的文件常常会造成恼人的合并冲突,打断“典型”的(或者至少是最佳状况下的) 提交请求流程。最好的选择就是存储源代码,然后让每个开发者在本地对其进行编译,或者使用一个构建服务器和公共的测试机器。

最后要注意,也不要包含哪些不是二进制文件的编译后的文件,因为这些文件会存储冗余的数据,git 资源库的会因此而不必要的变大。

图片/视屏/音乐/pdf

这些类型的文件实际上也是作为二进制文件被存储的,所以上面的规则在这里仍然适用。不过,当可以选择配备一些共享服务器,并在部署期间将多媒体资源引用进来时,将这些文件留在资源库中还是很容易的。此外, 当然也有充分的理由 (读取:文件保险) 来提交这些类型的文件。不过,因为 git 会在每次发生变化时都对整个二进制文件进行存储,这些文件将肯定会使得资源库的规模发生膨胀 - 特别是当他们经常发生变化时。

依赖

不要在 git 资源库中将下载过来的依赖包含进去! 这包括 Python 包和 Node 模块或者 Bower 组件。而是将诸如针对 Python/Pip 的 "requirements.txt" 文件或者针对 Node 的 "package.json" 文件这类对于依赖的引用包含进去。即使是一种解释型语言(比如 Python 和 Node)中的依赖,也常常会以特定于系统的方式被编译和安装。这也将会使得在不同系统/架构上进行的开发让人感觉痛苦。如果依赖引用被提交了,那么每个开发者都可以在资源库被克隆下来之后自行去获取到这些依赖。

专家建议:可以的话就要确保 "node_modules", "bower_components", "env", 以及 "target" 都包含在你的 .gitignore 文件中。

配置文件

永远不要把配置文件放在 GIT 仓库中!即使你百分之一百肯定没有人可以根据你暴露在配置文件中的密码和数据库连接信息来攻击你的系统, 对于其他开发人员来说这也将是一个噩梦。配置文件中的信息常常是和机器有关的(比如机器的 host name,ip 地址等等),特别对于那些不是使用虚拟机或者容器技术来进行开发的开放人员来说,更是如此。在这种情况下,开发人员之间经常会因为配置文件内容的不同而发生争吵。所以,请不要把配置文件放到 GIT 仓库中。

和操作系统相关的隐藏文件和第三方软件创建的文件

这个章节主要是针对工作在 OS X 上的开发者,对于这些开发者而言,提交一个名字叫".DS_store"文件夹下面的文件并不会让其他工作在 linux 下的开发者对你影响特别深刻。在通常情况下,但你创建 GIT 仓库的时候,在 gitignore 文件中指明忽略一切以 dot 开头的文件/文件夹(一般是隐藏文件)是一个非常好的选择。对于我而言,我一般将我的开发环境文件命名成 .env,将配置文件命名成 .config.json,这样通过在 gitignore 文件中指明忽略一切以 dot 开头的文件就自动将配置文件过滤掉了。

最后,如果你在使用一个第三方的文件系统工具,请确保这些工具没有输出任何的隐藏文件/文件夹到你的 GIT 仓库目录中。在大多数情况下,这下隐藏文件/文件夹是完全和 GIT 仓库无关的。

结论

关于应该不提交哪些文件到 GIT 仓库,底线就是请站在其他开发人员的角度来思考。再次强调一下,请善用 .gitignore 文件来过滤掉不需要提交的文件/文件夹。

文章转载自 开源中国社区[https://www.oschina.net]

时间: 2024-12-27 20:48:30

不要把配置文件放到你的 Git 代码仓库的相关文章

git代码仓库迁移(从github到oschina)【转】

转自:http://blog.csdn.net/a5244491/article/details/44807937 版权声明:本文为博主原创文章,未经博主允许不得转载. 因为一些特殊原因,需要将公司原来的代码仓库从github移植到oschina上去,项目手工操作很麻烦.自己整理了一下,写了简单的几个脚本来处理了. 在这之前,必须先手动在新的Git仓库上把项目先建立好,否则是不会成功的.(也许有命令行方式,还请告知,我不会) 1 先建立个空的目录,用来down工程以及处理工程 $ mkdir m

wghd的git代码仓库分支管理说明【转】

    英文原文:http://www.nvie.com/posts/a-successful-git-branching-model/ 原文作者:Vincent Driessen 本文经Linux大棚博主总结精简而成. 1     GIT,在技术层面上,绝对是一个无中心的分布式版本控制系统,但在管理层面上,我建议你保持一个中心版本库.   2 我建议,一个中心版本库(我们叫它origin)至少包括两个分支,即"主分支(master)"和"开发分支(develop)"

真正的持续集成:分布式代码仓库和依赖

微服务架构为软件开发带来了极大的灵活性,并加快了交付速度,但同时也带来了依赖管理问题.传统的解决方案虽然能够解决依赖管理问题,但都太极端,顾此失彼.于是,Netflix尝试着寻找自己的解决方案,期待着在整个组织层面做到真正的持续集成.本文内容来自Netflix技术博客,已获得翻译授权,查看英文原文 Towards true continuous integration:distributed repositories and dependencies. 在过去的8年间,Netflix基于AWS构

Git 创建仓库【转】

转自:http://www.runoob.com/git/git-create-repository.html Git 创建仓库 本章节我们将为大家介绍如何创建一个 Git 仓库. 你可以使用一个已经存在的目录作为Git仓库. git init Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令. 在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录

程序员必须知道的几个Git代码托管平台

一.VS2013中克隆远程Git仓库和SSH的配置 1.VS2013中克隆远程项目 首先感谢园友的评论和补充,今日又仔细看了一下,VS2013中是可以克隆项目的,只是我一直用的GitHub来克隆的,所以没有注意到.我们打开VS2013,切换到团队资源管理器,如图: 点击连接到团队项目-,会看到如下图界面: 点击克隆,输入远程Git地址,然后点击克隆按钮,就会将远程仓库的项目克隆到本地,路径为下面文本框中的地址,我们也可以点击后面的-按钮进行修改或者手动输入. 2.SSH的配置 如果安装了Gith

常用Git代码托管服务分享

Git Repository代码托管服务越来越流行,目前有很多商业公司和个人团队逐渐切换项目到 Git平台进行代码托管.本文分享一些常用的Git代码托管服务,其中一些提供私有项目保护服务,特别有利于远程团队协作开发项目使用. GitHub https://github.com/ 目前最流行的Git服务,也是人气最旺盛的Git代码托管网站.但是私有项目需要付费,个人认为GitHub更适合开源项目使用,很多开发人员在这个平台上分享开发经验,同时协作完成项目. GitLab http://www.gi

程序员必须知道的几个Git代码托管平台(转)

  上一篇博客中2015继续任性--不会Git命令,照样玩转Git我们简单的介绍了在VS2013中使用Git,和GitHub客户端的使用.那么使用Git到底有什么好处呢?最为明显的是支持Git代码托管的平台比较多,而且都是免费的.今天就为大家推荐几款比较火的Git代码托管平台,欢迎大家补充.不过,这里首先来对上一篇的问题进行一些说明.如果大家还有喜欢用SVN的,请参考淘宝code-- 最给力的国内免费SVN(不限语言),异地团队开发.打造个人开源项目不再是梦这篇文章.    一.VS2013中克

使用Git进行版本控制:(2)在OS X系统上开始使用Git代码仓储

了解了基本的Git概念之后,现在我们开始讲Git应用到实际的工作中来.通常比较常用的代码托管网站有Github和BitBucket等,二者基本功能类似,在细节上稍稍有点区别.首先,在开源世界的影响力上Github大幅领先,现在已经堪称是程序员的Facebook,而BitBucket则稍逊一筹:其次,GitHub在不购买增值服务情况下仅能建立公开代码库,即只能在上面开发开源项目,而BitBucket则可以免费建立多个私人代码库:第三,Github仅支持Git进行同步操作,而Bitbucket支持G

12 款各种编程语言实现的 Git 代码托管系统

尽管 SVN 在企业中还是占据着主导的位置,但在互联网世界的版本控制系统中,Git 一枝独秀,而且 Git 的整个社区非常之活跃,各种围绕着 Git 的代码托管平台.各类 Git 的开源托管系统和工具等等琳琅满目.层出不穷. 本文向你介绍用各种不同编程语言开发的 12 个 Git 代码托管系统,总有一款能满足你的需求.实在不愿意自己安装,你还可以将代码托管到 git.oschina.net 上,我们来为你提供各种服务的保证,关键是 -- 连私有库也全免费,数量也没限制!(不差钱) 废话少说,走你