小编mxm*_*mxm的帖子

将两个 git-svn 存储库与顶部的常规 git 提交合并

我在家使用 Arch Linux 存储库中的 git 版本 1.8.5.3,在工作中使用 Ubuntu 13.10 中的 git 版本 1.8.1.2。在工作中,我们使用svn,所以我使用git svn来处理它。

我在工作和家里使用 git svn 检查了 svn 存储库。包含 git-svn-id 的提交消息是相同的。作者和日期也是如此。但是,生成的提交哈希值并不相同。

git svn fetch && git svn rebase 
Run Code Online (Sandbox Code Playgroud)

工作正常。但是,如果我尝试通过 git 在两个存储库之一上合并一些提交,git 自然无法检测到父级并吐出合并错误。

我在想,这只能是由于哈希计算的变化造成的。这也会破坏其他 git 存储库,因此这可能是与 git svn 有关的问题。

第一次编辑

git log --pretty=raw
Run Code Online (Sandbox Code Playgroud)

为所有提交显示不同的父级。这解释了不同的哈希值,但这首先是如何发生的呢?事实证明,如果我一路回到第一次提交,它们确实具有相同的父级,因此具有正确的哈希值。所以一路走来,某些事情一定发生了变化……

第二次编辑

使用找到最后一个公共提交哈希

git merge-base branch1 branch2
Run Code Online (Sandbox Code Playgroud)

下面的提交是一个 svn merge 分支。这是预期的行为吗?

第三次编辑

工作的目的是使用

git cherry-pick hash
Run Code Online (Sandbox Code Playgroud)

并一一应用提交...

更新

都是我的错。我在工作中检查了整个 svn 存储库,但只检查了家里的主干。这就是为什么从两个 svn 分支的合并开始提交哈希值是不同的。

git version-control hash merge git-svn

1
推荐指数
1
解决办法
617
查看次数

标签 统计

git ×1

git-svn ×1

hash ×1

merge ×1

version-control ×1