我有一个远程回购,我想在其中提交某些文件(已编译的文件以将它们部署到云计算平台上),但是我不想在github上部署它们...
有什么办法可以拥有不同的.gitignore文件,每个远程文件一个?
我有一个远程回购,我想在其中提交某些文件(已编译的文件以将它们部署到云计算平台上),但是我不想在github上部署它们...
有什么办法可以拥有不同的.gitignore文件,每个远程文件一个?
Answers:
在git的模型中,这实际上没有任何意义。提交包含文件集;所有.gitignore文件所做的就是告诉UI不要自动添加与某些模式匹配的文件。这实际上意味着具有几乎相同的并行提交集,但是仅包含文件的子集。
使用分支方案可以做到这一点,在该方案中,您有一个“部署”分支,该分支与master分离,并且相同,但是包含其他编译文件。这甚至可以通过git hooks自动实现,以自动编译文件并将其添加到仓库中。我正在构想这样的结构:
master: A ---> B ---> C ---> D
\ \ \ \
\ \ \ \
deployment: -> A' -> B' -> C' -> D'
即,每当特定服务器在master上获得新提交时,它都会构建项目,将构建的文件从D添加到新提交中,然后将其提交到Deployment分支-然后不必将其推送到github。
我想出一种方法来做到这一点。
就我而言,我需要将项目与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)
因此,这不是具有两个具有不同gitignores的远程存储库的git存储库。
有两个不同的存储库。
在最里面,我仅排除由IDE生成的文件和一些在运行时生成的文件。
在最外层,我排除了所有无法公开的文件。
另一个选择是git submodules。
例如,如果您希望代码和文档位于具有独立访问控制的两个不同的存储库中,则这很有用。因此,您总共有3个存储库,一个用于文档的子模块存储库,一个用于代码的子模块存储库以及一个“主人”(不是git子模块)存储库,两者都包含(也许用于pypi上传)。这是组织CS教科书项目的一种不错的方法。这两个项目都可以独立进行,并在主要回购维护者的驱动下在主要版本中同步进行。
此处提到的方法的自动化解决方案:
cd ..; rm -rf temp_folder;
在推送后将其删除。 github.com/MichaelDimmitt/publicize_readme/blob/master/... github.com/MichaelDimmitt/publicize_readme/blob/master/...