在git合并期间,如何接受特定文件夹中的所有远程文件?
我们在Windows Powershell上使用posh git进行源代码控制 我们在git repo中存储一些构建的程序集,这是一个不可取的位置。我知道所有关于你为什么不应该那样做的布道,但我们现在必须接受它。谢天谢地,他们在一个单独的解决方案中,但有时两个人同时在他们自己的分支中处理该解决方案,最后一个人将处理合并冲突。当然,这个过程是这样的:在git合并期间,如何接受特定文件夹中的所有远程文件?,git,powershell,merge,gitignore,posh-git,Git,Powershell,Merge,Gitignore,Posh Git,我们在Windows Powershell上使用posh git进行源代码控制 我们在git repo中存储一些构建的程序集,这是一个不可取的位置。我知道所有关于你为什么不应该那样做的布道,但我们现在必须接受它。谢天谢地,他们在一个单独的解决方案中,但有时两个人同时在他们自己的分支中处理该解决方案,最后一个人将处理合并冲突。当然,这个过程是这样的: 人员A将其更改登录到develop上 人员B合并这些更改,其中包括程序集和 更新源代码 人员B解决冲突,因为必须确认每个冲突的版本 他们想保留的集会
git merge develop
我在想,也许可以.gitignore忽略/Source/foundationassemblies/文件夹,然后在合并后将其从.gitignore中删除,但这是三个步骤。如果我们能从命令行一次完成,那就太棒了强>
感谢您的帮助 您可以执行
git merge develop-X thethers
,所有冲突都将占用远程分支的副本
编辑:回顾您的问题,我发现您只想为特定子文件夹选择“他们的”。在这种情况下,在
git merge develope
之后,执行git签出——他们的/Source/Foundation程序集/
。这将用“他们的”替换该文件夹的内容。然后只需git add/Source/Foundation Assemblies/
就可以了。您有几种合并策略可以使用:
决定
这只能使用3路合并算法解析两个头部(即当前分支和从中提取的另一个分支)。它试图仔细地检测交叉合并歧义,通常被认为是安全和快速的
递归的
这只能使用3路合并算法解析两个头部。当有多个公共祖先可用于3路合并时,它将创建公共祖先的合并树,并将其用作3路合并的参考树。据报道,通过对取自Linux2.6内核开发历史的实际合并提交进行测试,可以减少合并冲突,而不会导致错误合并。此外,这还可以检测和处理涉及重命名的合并。这是拉取或合并一个分支时的默认合并策略
“递归”策略可以采用以下选项:
我们的
此选项通过支持“我们的”版本,强制冲突大块自动干净地解决。来自另一棵树的与我方不冲突的更改将反映到合并结果中。对于二进制文件,所有内容都取自我们这边
这不应该与“我们的”合并策略混淆,后者甚至根本不看其他树包含什么。它丢弃其他树所做的一切,声明“我们的”历史包含其中发生的一切
他们的
这与“我们的”相反
甚至更多,但这些是主要的。在您的案例中,“正确”的方法是在提交合并之前重新生成程序集。我不明白你为什么不这样做。以下步骤应有效:
git添加准备好的程序集
git-rm--force-r
kdiff3
没有)git add
据我所知,我尝试用bash脚本复制您的案例。这看起来是正确的,但没有进行任何实际更改。我在查看前后完全相同的git状态:C:\Src\Repos\Estream\Source[crosstrack-69-63284-ssrs-reports+162~711-127!109 |+0~0-0!109]>。我运行的命令是:git checkout--theres'.\Foundation Assemblies',我也尝试了各种变体来正确表示“基础程序集”。单引号、双引号、开头不带“\”、结尾不带“\”等等……根据我的上述评论,可能值得注意的是,回购协议在我开始时处于冲突状态。这是我通常运行“gitmergetool”的地方;修复冲突,然后提交结果。@EricBurcham,您是否确保
git签出后git添加
文件夹--他们的
?是的。也许我错过了什么。我将重试此操作。我们使用Beyond Compare来解决合并冲突。我们通过键入“git mergetool”来调用它。Beyond Compare无法解决二进制差异,因此我们必须让数百个选项卡打开/关闭,并告诉git在每一个选项卡之后继续合并冲突。这很简单,但需要一段时间