去年,来自 TFS TFVC 存储库的代码被复制到没有历史记录的 TFS Git 存储库。它只是将文件复制/粘贴到新的 git 存储库中。现在是否可以从旧的 TFVC 存储库迁移历史记录?
问问题
66 次
1 回答
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
(将更新中央远程存储库)
于 2019-06-24T13:05:30.060 回答