我正在使用 git-svn 针对我公司的 Subversion 存储库进行离线开发,该存储库是项目的记录存储库。为了启用管理可见性,我需要在 SVN 中维护我的功能分支。有时我需要在分支的生命周期内多次合并从主干到特性分支的更改。由于我需要在 SVN 中保持分支是最新的,所以我必须合并;一旦提交被推送到 SVN,我就无法重新设置提交。此外,git svn dcommit
从合并提交中删除第二个父级。这意味着在第一次git merge
将分支根标识为合并基础而不是最近的合并父项之后进行合并。因此,它试图重新合并已经合并的更改,这几乎可以保证令人讨厌的冲突。
当我在 SVN 中合并时,我手动指定了基本版本:
svn merge -r 49262:49608 $svn/trunk
git中有没有办法与手动指定的基本修订进行合并?
更新:
请注意,我需要指定两个修订版,基础修订版和父修订版。我有这样的历史
trunk: A -- B -- C -- D -- H -- I
\ \
feature: E -- F -- G -- J -- K
但已删除和git svn dcommit
之间的父关系。我需要将on与. 简单地运行G
D
I
K
D
$ git checkout feature
$ git merge trunk
将尝试与基础I
而不是合并,这会重新应用并导致极端的合并冲突。使用 SVN 我会运行类似的命令K
B
D
C
D
$ svn switch $svn/feature
$ svn merge -r D:I $svn/trunk
但git merge
没有指定基本版本的选项D
。我正在寻找类似的东西
$ git merge --base D trunk
但这样的选择似乎不存在。