去年,TFS TFVC存储库中的代码被复制到没有历史记录的TFS Git存储库中。这只是将文件复制/粘贴到新的git存储库中。现在是否可以从旧的TFVC存储库中迁移历史记录?
答案 0 :(得分:0)
这是可能的,但这取决于您的期望。
您必须做什么:
将历史记录迁移到新的git存储库中(这不是一件容易的事,但我认为您一定会成功完成)
将此新存储库添加为已包含最新历史记录(git remote add ...
和git fetch --all
在最后一次提交时创建一个本地分支并将其推送到您的中央存储库。
您现在必须使用git replace --graft
才能将旧的历史与新的历史链接起来。
来自文档:
git replace --graft <commit> [<parent>…]
创建嫁接提交。将创建一个新提交,其内容与父提交相同,只是其父将是[…]而不是的父。
因此运行命令:
git replace --graft <sha1_first_commit_new_history> <sha1_last_commit_old_history>
在这里,您有2个选择:
在所有现有存储库中运行此命令,并在每次克隆存储库时运行此命令。
使嫁接成为永久性的,但缺点是新历史的所有sha1都将改变。您必须查看它是否适合您。
如果是这样:
git filter-branch -- --all
使其永久保存(此后验证结果,如果一切正常,请删除筛选分支备份分支)git push --force -- --all
(将更新中央远程存储库)