如何在git merge中覆盖merge-base?

时间:2015-08-17 20:15:36

标签: git merge git-merge

我的存储库有樱桃选择记录为合并。它抛出了git选择的合并基础。是否可以指定合并基础?如果是这样,怎么样?

示例:f在A处从主人处分支出来.C被挑选为f,但误导性地将其作为与K和C合并为父母。

A-B-C   master
\   \  
 K---C'-L   f

将f合并到master git时会发现C是最常见的祖先并将其用作Base。由于B包含在Base中,但是在f处丢失,它将被合并撤消。使用A作为基础将提供正确的合并。

编辑:This answer排除计划B在下面询问。所以,希望有人可以回答:如何在git合并中指定合并基础?

编辑,计划B:使用tfs-git从具有cherry-pick-workflow的两个tfs-branch中获取存储库。一个变更集的“合并选定范围”显示为git中的完全合并。另一种解决方案是以某种方式配置git-tfs以不创建merge-commits。 (暂停采摘樱桃不是一种选择。)

2 个答案:

答案 0 :(得分:6)

  

如何在git merge中指定merge-base?

用移植物:

echo $(git rev-parse tip1 mybase) >>.git/info/grafts
echo $(git rev-parse tip2 mybase) >>.git/info/grafts

git checkout tip1
git merge tip2

rm .git/info/grafts
来自评论的

编辑:带有带注释的标签,在引用的末尾指定^{}tip1^{}等,以便进行rev-parse追逐并打印提交的id而不是对标签的满意度。

答案 1 :(得分:1)

我认为问题在于"樱桃采摘" (以Git方式)似乎是没有函数或Team Foundation Server Versioncontrol的planned workflow

"樱桃挑选" git命令适用于[[]]分支尖端的[给定]提交[s]引入的更改,并使用[那些]更改[s]创建[s]新提交。&# 34; (http://git-scm.com/docs/git-cherry-pick

TFSVSC没有"采摘"命令,但有可能做"合并[a]选定的范围"或者"部分合并"它将指定的(后续的)变更集合并到另一个分支(http://blogs.msdn.com/b/dstfs/archive/2009/05/04/partial-merges-in-tfs-a-guide.aspx)上的新变更集中。

这就是git-tfs似乎达到极限的地方(写作时) - Invalid selective merges instead of cherry picks。那里(目前)似乎没有故障安全方式将部分合并转换为相应的git-cherry-picks,其中git-merge提供了错误的结果,因为Git基于快照(因此需要依赖树)与TFS相比有所不同关于变更集。

我目前认为你必须等到git-tfs的问题得到解决,或者在git-repository中进行挑选。另一种方法可能是检查tfs-repository并将其提交给git-repo,但这将在传输过程中解除您的提交历史记录。