混帐:有不同的.gitignore文件为每个远程(git: have different .giti

2019-06-24 05:37发布

我有我要提交某些文件的远程回购(编译后的文件来部署他们在云计算平台),但我不希望他们在github上部署...

是有一些方法可以有不同的.gitignore文件,为每个远程?

Answer 1:

这并不真正使Git的模型感。 提交包含文件集; 所有的.gitignore文件要做的就是告诉用户界面不会自动添加文件某些模式匹配。 什么这将有效的意思是有并行套是几乎相同的提交,但只包含文件的子集。

它会是可能的分支方案,您有一个“部署”分支,分裂出主人的,是相同的,但包含了额外的编译后的文件来做到这一点。 这甚至可以使用Git挂钩自动编译文件,并将它们添加到回购自动化。 我设想这样的结构:

master:       A ---> B ---> C ---> D
               \      \      \      \
                \      \      \      \
deployment:      -> A'  -> B'  -> C'  -> D'

即每隔一定时间服务器上获取主一个新的提交,它生成项目,增加了内置的文件到一个新的d承诺,并承诺,要部署分支 - 这则不必推到github上。



Answer 2:

我想出一个办法做到这一点。

就我而言,我需要用的Heroku和GitHub上的项目(如公共回购)同步。

但随着私人信息的一些文件不感兴趣的公共资源库共享

通常一个简单的项目将有以下文件夹结构

Project folder (remote heroku)
    - .git
    - .gitignore
    - (folders and files)

我所做的是增加一个级别,并在其中创建另一git仓库,与将来自我的项目省略一些文件gitignore。

Project public (remote github)
    - .git
    - .gitignore
    - Project folder (remote heroku)
        - .git
        - .gitignore
        - (folders and files)

因此,这不是一个Git仓库与不同gitignores两个远程存储库。

有两种不同的存储库。

在最里面我只排除由IDE生成的文件并在运行时产生的一些文件。

在最外层,我排除所有文件不能被公开。



Answer 3:

另一种选择是git的子模块 。

如果,例如,你希望你的代码和文档,具有自主访问控制等,所以你有3个总回购协议,一个子模块回购的文档,另一个用于代码两种不同的回购协议,而“这可能是有用主”(不是git的子模块)的含回购两者(对于上传的PyPI,也许)。 这是组织对CS教科书项目一个体面的方式。 这两个项目都可以独立进行欢快地往前走,在主要版本,由主回购维护者驱动同步。



Answer 4:

自动化解决方案在这里提到的方法:

  1. 设置根git的忽略子文件夹(S)你想要的不同传输
  2. INIT子文件夹(或多个)内的git新分配和远程配置
  3. 修改根文件夹中的.git /挂钩/预推的文件,在基于传入参数的子文件夹给exec混帐推。


文章来源: git: have different .gitignore file for each remote