Git-svn非樱桃

时间:2015-10-05 06:47:43

标签: git svn git-svn cherry-pick

给定以前在SVN中的存储库,现在已完全转换为Git(即当前通过"纯" git而不是git svn访问):

鉴于主要分支和发布分支在Git转换之前偏离主线:

是否有任何简单的方法(来自Git)来告知发布分支上存在哪些提交而不是主线分支(即,可能的候选者被挑选回主线,当直接修复时发布分支)?

我看到的问题是像git cherry这样的命令(显然是在Git转换后分支的分支的正确选择)期望完整的提交保持不变,但是合并了在转换之前的SVN倾向于翻滚 - 基本上是压扁的樱桃而不是完整的樱桃。

在SVN中,这是通过检查svn:mergeinfo属性(通常通过工具自动)来完成的。我不知道在转换过程中是否保留了这些信息,或者是否有任何工具知道在显然是本机的Git存储库中查找它。

1 个答案:

答案 0 :(得分:1)

您可以在release分支中找到更改但<{1}}上的提交列表 - 因此是樱桃采摘 - 使用mastertriple-dot syntax

git log --cherry-pick

让我们分解一下:

  • git log --cherry-pick --right-only master...release 选择可从master...release但不能release访问的提交,反之亦然。
  • master仅显示可从该范围的右侧到达的提交,在本例中为--right-only分支
  • release隐藏了--cherry-pick的提交,其中更改已经应用于release - 即它们被视为等同于的补丁

这里的关键部分是master,因为这是导致Git根据提交的补丁确定是否已将提交应用于分支而不是其SHA-1哈希的原因。 / p>