我们需要从Git源代码基础生成TFS存储库,我们希望保留原始提交历史记录,所以我尝试使用Tf-Git "git tf checkin -deep“命令,该命令应该为每个Git提交创建一个TFS变更集。
不幸的是,这一步失败了,因为由于合并,Git repo中的许多提交都有两个父项,而TFS要求提交历史是线性的,才能导入它。因此,我得到以下错误:
git-tf: cannot check in - commit 2b15822 has multiple parents, please rebase to form a linear history or use --shallow or --autosquash
这是可以理解的。但是如果现有的Git repo有一长串这样的提交,我们能做些什么呢?我知道可以花一两天的时间手动修改提交历史,但这不是我们想要花费的时间。我是否正确理解了没有自动修复提交历史成为线性的方法,因此,除非我们想在手动工作上花费大量时间,否则我们应该将整个历史作为单个变更集导入。
发布于 2013-02-05 09:47:41
rebase实际上应该能为你解决这个问题。
git rebase -i <hash of commit before first branch has been created>
在执行该命令时弹出的窗口中,不要更改任何内容。只需保存并关闭。
下面是一个示例:
A <- B <- E <-----F <- G master
^ ^
\ /
- C <- D - branch
提交C
和D
位于一个分支上,并已通过合并提交F
合并到主服务器中。
现在,当从master
执行时,执行git rebase -i B
将产生以下结果
A <- B <- C <- D <- E <- G master
请注意,合并提交F
消失了,因为它将是空的。
https://stackoverflow.com/questions/14704261
复制