给定以前在SVN中的存储库,现在已完全转换为Git(即当前通过"纯" git
而不是git svn
访问):
鉴于主要分支和发布分支在Git转换之前偏离主线:
是否有任何简单的方法(来自Git)来告知发布分支上存在哪些提交而不是主线分支(即,可能的候选者被挑选回主线,当直接修复时发布分支)?
我看到的问题是像git cherry
这样的命令(显然是在Git转换后分支的分支的正确选择)期望完整的提交保持不变,但是合并了在转换之前的SVN倾向于翻滚 - 基本上是压扁的樱桃而不是完整的樱桃。
在SVN中,这是通过检查svn:mergeinfo
属性(通常通过工具自动)来完成的。我不知道在转换过程中是否保留了这些信息,或者是否有任何工具知道在显然是本机的Git存储库中查找它。
答案 0 :(得分:1)
您可以在release
分支中找到更改但<{1}}上不的提交列表 - 因此是樱桃采摘 - 使用master
和triple-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>