在GIT中合并同一分支中的文件夹,如TFVC

uajslkp6  于 2023-04-28  发布在  Git
关注(0)|答案(2)|浏览(232)

我已经在Azure DevOps上使用TFVC很长一段时间了,最近正在考虑迁移到Git,以利用创建分支的简单方式,并能够轻松地在它们之间切换(而不是TFVS,您必须检查整个分支)。
TFVS为我提供了很好的服务,我已经得到了我需要的一切设置,但我发现很难弄清楚如何将其转换为Git设置。
我目前有一个情况,我需要合并一个文件夹中的更改到同一分支上的另一个文件夹。

这就是为什么项目“A”可以拥有“主要”功能,而项目“B”可以拥有“A”拥有的所有功能,沿着不应该在“A”中的额外功能。
在TFVC上,这就像进入源代码管理资源管理器一样简单,右键单击项目“A”并进入“分支和合并”,然后单击“合并”。
一个新的窗口弹出,我选择项目“B”,并点击完成。
这将项目“A”与“B”合并,因此“B”现在拥有“A”所拥有的一切,包括特定于“B”的项。
如果有任何冲突,我会在VS上看到,并可以轻松地选择我想要选择的值。
TFVS工作得很好,因为我有一个共享项目“Z”,它在项目“A”和“B”之间使用,不需要复制。
我想在迁移到GIT后得到类似的设置,但我无法弄清楚如何通过Git上的分支来实现这一点。
我认为最好和最干净的方法是在Azure DevOps项目中创建一个新的Repo。然而,我无法在合并时选择从一个仓库到另一个仓库的分支(只能在同一个仓库内合并)。
如果我在Git上想要的东西是不可能的-什么是最好的方式来获得这种设置?

ttcibm8c

ttcibm8c1#

一个普通的git repo真的做不到这一点。..但是你可以在git中完成类似的场景,但这并不容易。
git有一些扩展,比如git submodulegit subtree,你可以在主仓库中的特定版本“挂载”另一个git仓库。在这种情况下,您可以合并同一个repo的分支。
另一种选择是拥有同一个repo的多个fork,并在fork之间进行合并。只要这些分支是从同一个主仓库创建的,您就可以在这些分支的分支之间合并仓库的内容。
还有一些工具,如gita,可以帮助您在本地管理文件夹结构,在本地 checkout 多个存储库,并使它们处于不同的版本/分支/标签。
在所有这些情况下,您最终将拥有多个存储库,其中包含您想要版本化的内容。然后是一个主存储库或配置来 Package 它。
当在Azure Repos中创建多个存储库时,您可以使用fork功能创建一个合并兼容的repo副本。When it's a true fork, Azure Repos will allow you to pull-request between them
或者,您可以从repo A中git clone repo,然后将其推送到repo B中,以允许它们之间的合并。You would then have to do the merges in a local repository that has multiple remotes attached to it

xeufq47z

xeufq47z2#

在尝试了jesse建议的解决方案并研究了各种不同的其他方法之后,我得出的结论是,没有简单的方法可以做到TFVS能够合并不同的文件夹分支。
我会写下对我有效的方法,以防其他人也遇到类似的问题,因为它对我有效(尽管比我想要的稍微多一点手动)。
首先,我下载了一个名为“Meld”的Windows开源比较工具:
https://meldmerge.org/
使用Meld,我比较了文件夹A和文件夹B,其中显示了两个文件夹之间的所有更改,包括所有文件,并使用GUI复制了所需的所有内容。
Meld的好处是,它允许我通过点击按钮复制更改,而不是必须手动复制粘贴我想要的内容。
虽然它不如TFVS快(TFVS“聪明地知道”文件之间的主要差异,只显示了合并冲突),但由于对我来说易用性,这一点紧随其后。

相关问题