我们需要从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仓库拥有一长串此类提交,可以采取哪些措施呢?我知道可以花一两天时间手动修改提交历史记录,但这不是我们想要度过的日子。我是否正确理解没有自动修复提交历史记录以变为线性的方法,因此除非我们想花费很多时间进行手工操作,否则我们应该将整个历史记录导入为单个变更集?
答案 0 :(得分:6)
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
。
现在,从git rebase -i B
执行时,执行master
将产生以下结果:
A <- B <- C <- D <- E <- G master
请注意,合并提交F
消失了,因为它会为空。