我们需要从Git源代码库生成TFS存储库,我们希望保留原始提交历史记录,所以我尝试使用Tf-Git"git tf checkin --deep"命令,该命令应该创建一个TFS变更集每个Git提交.
不幸的是,这一步失败了,因为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
Run Code Online (Sandbox Code Playgroud)
这是可以理解的.但是,如果现有的Git仓库拥有一长串此类提交,可以采取哪些措施呢?我知道可以花一两天手动修改提交历史记录,但这不是我们想要度过的日子.我是否正确理解没有自动修复提交历史记录以变为线性的方法,因此除非我们要花费很多时间进行手工操作,否则我们应该将整个历史记录导入为单个变更集?
一个rebase实际上应该为你解决这个问题.
git rebase -i <hash of commit before first branch has been created>
Run Code Online (Sandbox Code Playgroud)
在执行该命令时弹出的窗口中,不要更改任何内容.只需保存并关闭.
举例说明:
A <- B <- E <-----F <- G master
^ ^
\ /
- C <- D - branch
Run Code Online (Sandbox Code Playgroud)
提交C并且D在分支上并且已经通过合并提交合并到master中F.
现在,执行时git rebase -i B将产生以下结果master:
A <- B <- C <- D <- E <- G master
Run Code Online (Sandbox Code Playgroud)
请注意,合并提交已F消失,因为它将为空.
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |