繁体   English   中英

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

[英]Git ignore files per branch or remote repository

用过的

Git,Github.com

问题

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

  • 我希望第1小组致力于:A,C,D(不想将B,E暴露给他们)
  • 当第2小组从事以下工作时:B,D,E(不想将A,C暴露给他们)
  • 我想从事:A,B,C,D,E

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

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

不工作

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

  • 子模块对我不起作用-文件位于不同的位置,对于每个开发人员团队,我将需要忽略不同的文件束
  • 每个分支的Excludesfile不起作用
  • .gitignore将在我拉出时删除这2-3个文件

我不想相信没有简单而优雅的解决方案,只是忽略每个推送或分支或远程回购中的某些文件或其他...

附加

  • 我不能将一个项目分成几个项目

我将创建三个项目:

  • D(常见,所有人可见)
  • A和C(您和团队1可见),对D的依赖
  • B和E(您和第2团队可见),依赖D

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

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

Git没有访问控制,因此:“ git ”,“ 秘密文件 ”和“ 易于维护 ”不能很好地混合使用。 查看服务器上的 gitoliteGit-如果要添加访问控制层,则为gitolite

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM