git:每个远程都有不同的.gitignore文件
我有一个远程仓库,我想提交某些文件(编译后的文件在云计算平台上部署),但我不想在github上部署它们…
有没有办法有不同的.gitignore文件,每个远程?
这在git的模型中并不合适。 提交包含文件集; 所有.gitignore文件所做的是告诉用户界面不要自动添加匹配某些模式的文件。 这实际上意味着具有几乎相同的并行提交集,但只包含文件的一个子集。
有可能用分支机制来实现这一点,在这个机制中,你有一个“部署”分支,它与主分支相同,但是包含额外的编译文件。 这甚至可以通过git钩子来自动编译文件并将它们添加到回购站。 我正在设想一个像这样的结构:
master: A ---> B ---> C ---> D \ \ \ \ \ \ \ \ deployment: -> A' -> B' -> C' -> D'
也就是说,每当某个服务器在主服务器上获得一个新的提交时,就会生成项目,并将构build的文件添加到D中的新提交中,并将其提交给部署分支 – 然后不必将其推送到github。
另一个选项是git submodules 。
例如,如果您希望您的代码和文档与独立访问控制等两个不同的回购站,那么这将非常有用。因此,您将拥有3个回购站,一个用于文档的子模块回购站,另一个用于代码回收站以及“主“(不是一个git子模块)回购包含两者(用于pypi上传,也许)。 这是组织CS教科书项目的一个体面的方式。 两个项目都可以独立前进,并在主要版本维护者的推动下在主要版本中同步。
我想办法做到这一点。
就我而言,我需要与heroku和github(作为公共回购)同步项目。
但是一些有私人信息的文件在公共存储库中不是很有趣
通常一个简单的项目将具有以下文件夹结构
Project folder (remote heroku) - .git - .gitignore - (folders and files)
我所做的是添加一个级别,并在其中创build另一个git仓库,与一个gitignore会省略我的项目中的一些文件。
Project public (remote github) - .git - .gitignore - Project folder (remote heroku) - .git - .gitignore - (folders and files)
所以这不是一个有两个不同gitignores的远程仓库的git仓库。
有两个不同的存储库。
在最里面的我只排除由IDE生成的文件和在运行时生成的一些文件。
在最外层,我排除了所有不能公开的文件。
这里提到的方法的自动化解决scheme :
- 设置根.git忽略您想传输的子文件夹
- 在子文件夹中初始化新的git并分配远程configuration
- 修改根文件夹的.git / hooks / pre-push文件,根据传入的参数对这些子文件夹执行git push。