4

我们需要从 Git 源代码库生成 TFS 存储库,我们想保留原始提交历史记录,所以我尝试使用 Tf-Git "git tf checkin --deep" 命令创建 TFS 变更集每个 Git 提交。

不幸的是,这一步失败了,因为 Git 存储库中的许多提交由于合并而有两个父级,并且 TFS 要求提交历史是线性的才能导入它。所以我收到以下错误:

git-tf: cannot check in - commit 2b15822 has multiple parents, please rebase to form a linear history or use --shallow or --autosquash

这是可以理解的。但是,如果现有的 Git 存储库有很长的此类提交链,可以做些什么呢?我知道可以花一两天时间手动修改提交历史记录,但这不是我们想要花费的时间。我是否正确理解没有将提交历史记录变为线性的自动化方法,所以除非我们想在手动工作上花费大量时间,否则我们应该将整个历史记录作为单个变更集导入?

4

1 回答 1

9

变基实际上应该为您解决这个问题。

git rebase -i <hash of commit before first branch has been created>

在执行该命令时弹出的窗口中,不要更改任何内容。只需保存并关闭。

插图:

A <- B <- E <-----F <- G      master
     ^            ^
      \          /
       - C <- D -             branch

提交CD在一个分支上,并已通过合并提交合并到 master 中F

现在,执行git rebase -i B将产生以下结果,当从 执行时master

A <- B <- C <- D <- E <- G    master

请注意,合并提交F消失了,因为它将是空的。

于 2013-02-05T09:47:41.383 回答