我需要两个连接(分叉)存储库来拥有一个公共文件夹,在同步两个存储库(两个方向)时不考虑其内容。以这种方式,在同步时不需要手动干预,以防止意外覆盖/合并/添加。
更多详情:
考虑存储库A(私有)和fork F(公共)。在每个存储库中都有一个文件夹/myprecious
。
在存储库A中,myprecious
文件夹包含大量文件,并且正在积极处理并且需要成为存储库的一部分。在fork F中,同一文件夹只包含通常不会被修改的文件子集(占位符)。
从fork F接收拉取请求时,myprecious
文件夹应保持原样,不添加,删除或修改任何内容。同样,当将A的更改提取到fork F时,不应接收myprecious
文件夹的更改和添加但忽略。
是否可以通过子模块将myprecious
包含在repo A中(即将文件夹的内容移动到自己的存储库中),同时删除fork F中的子模块链接,将其替换为不同的(非子模块)内容?这项工作是否会发生合并冲突?或者有更好,更简单的方法来设置它吗?
答案 0 :(得分:1)
从你的描述来看,听起来像子模块就是你要找的东西。这将涉及一些额外的步骤。 在分叉时,您还需要init子模块并获取最新的提交文件。 也许两个分支需要维护一个被推送,所以任何分叉的人都会在子模块和另一个本地分支中获得额外的文件。
添加更多详情:
这就是它的工作原理:
现在当有人要求回复A时,如果他们这样做:
git submodule init
git submodule update
他们将使用存根文件更新子模块。
现在进行本地更改:
替代,如果不是子模块:
如果不跟踪/提交在A / myprecious中完成的本地更改,您可以查看使用:
git update-index --assume-unchanged <files>
请参阅:http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/