Git忽略每个分支或远程存储库的文件

时间:2014-03-11 19:11:53

标签: git github ignore collaboration

二手

Git,Github.com

问题

我有一个包含文件的项目:A,B,C,D,E。

  • 我希望第1组工作:A,C,D(不想向他们公开B,E)
  • 当Team 2工作时:B,D,E(不想向他们公开A,C)
  • 我想继续努力:A,B,C,D,E

然后我拉1队工作,让A,C,D与我的工作合并,然后拉2队工作,让B,D,E与我的工作合并。

如果需要,我可以为每个团队创建一个回购。

不工作

我已阅读所有文章并尝试了他们提供的所有内容。

  • 子模块不适合我 - 文件位于不同的位置,我需要忽略每个开发团队的不同文件串
  • 排除每个分支的文件只是不起作用
  • .gitignore将在我拉
  • 时删除这2-3个文件

我不想相信没有简单而优雅的解决方案只是为了忽略每个推送或分支或远程仓库或其他东西的某些文件......

附加

  • 我无法将一个项目分成几个项目

2 个答案:

答案 0 :(得分:2)

我会创建三个项目:

  • D(普通,对所有人都可见)
  • A和C(对您和第1组可见),依赖于D
  • B和E(对你和第2队可见),依赖于D

如果我想要更精细的访问控制,将A与C或B从D分开,我会进一步拆分项目。

我认为我不会尝试使用忽略文件进行访问控制。

答案 1 :(得分:1)

Git没有访问控制权,因此:“ git ”,“秘密文件”和“易于维护”只是没有好好混合。如果要添加访问控制层,请查看gitoliteGit on the server - gitolite

你需要进行实验,但是你可以按照从空回购开始,每个团队有一个分支的方式工作。但请注意,您不希望文件出现在任何相应的分支历史记录中。例如,您不希望拥有包含所有文件的主分支,即分支为team1分支,然后git rm文件。 “秘密”文件将保留在分支历史记录中,限制访问权限将无济于事。因此,您必须对分支机构之间的文件进行明确分离,或者每次您决定合并并运行再次引入文件的风险时,都要使用git filter-branch来删除文件的卫生脚本。

详细说明最后一个例子。假设您将team2工作合并到主分支中,现在想要与team1分享整体进度。您不能简单地将master合并到team1,但您可以将master分支为master-sanitized,运行filter-branch以删除文件team1不应该看到,然后将master-sanitized合并到team1,丢弃临时分支。然而,所有这些都无法避免重写提交的事实实际上是用新的sha1-s重新引入它们,因此合并将是-s ours-X theirs解决冲突的持续痛苦。