Git 将上游存储库与用子模块替换目录的分支合并

Git 将上游存储库与用子模块替换目录的分支合并,git,merge,git-submodules,Git,Merge,Git Submodules,在一家小型软件公司工作时,我最近遇到了一些合并冲突,试图从第三方上游存储库中引入更改 问题是上游存储库包含大量不断增长的二进制资产 经过深思熟虑后,我们决定用叉子把它们去掉,放到子模块中 由于原始repo的维护者反对为二进制资产和第三方库使用子模块,这就给合并更改带来了一些困难 在这里,什么是最佳策略 我一直在考虑添加一个.gittributes文件,为主存储库定义“我们的”合并目标,然后分别为所有子模块引入更改 还有更直接的吗?也许有一种方法可以使子模块在合并过程中的行为与原始目录一样 附言:

在一家小型软件公司工作时,我最近遇到了一些合并冲突,试图从第三方上游存储库中引入更改

问题是上游存储库包含大量不断增长的二进制资产

经过深思熟虑后,我们决定用叉子把它们去掉,放到子模块中

由于原始repo的维护者反对为二进制资产和第三方库使用子模块,这就给合并更改带来了一些困难

在这里,什么是最佳策略

我一直在考虑添加一个.gittributes文件,为主存储库定义“我们的”合并目标,然后分别为所有子模块引入更改

还有更直接的吗?也许有一种方法可以使子模块在合并过程中的行为与原始目录一样

附言:这可能没什么大不了的。但原始回购协议在Github上,而我们的回购协议存储在bitbucket上


编辑:我刚刚意识到原始repo的维护者已经将.gittattributes添加到了.gitignore。这可能会使应用合并策略变得更加困难,不是吗?

通过将二进制文件夹设置为二进制文件夹,可以将索引中的文件夹条目替换为二进制文件夹

这意味着来自上游的任何合并都应该忽略该条目

在“”中描述了一种简单的方法,即合并而不立即提交,并重置/path/to/folder

但是,在合并repo的其余部分之后,您仍然需要更新该二进制文件夹的内容


OP通过脚本
merge-upstream.sh
管理这些步骤

在该脚本中:

  • 我确保初始化和更新子模块(显然,在进行类似合并之前,这是一项要求)
  • 添加上游远程目标和
  • 通过运行“
    git add*
    ”然后运行3秒超时和“
    git commit-m‘上游合并’
    ”来解决合并冲突
我仍然需要添加几行代码来引入子模块的更改


谢谢你的意见。我最终这样做的方式(目前)是创建一个名为merge-upstream.sh的shell脚本。在该脚本中,我确保初始化和更新子模块(显然这是执行类似合并之前的一项要求),添加上游远程目标,并通过运行“git add*”和“git commit-m‘上游合并’”来解决合并冲突。我仍然需要添加几行代码来引入子模块的更改,但到目前为止,它工作得很好。@user237251看起来不错!我已将您的评论包含在答案中,以提高可视性。