我希望某种命令类似于git tfs repair
验证命令。然而,代替找到类似的东西,我能够以两种不同的方式解决这个问题。我有两个存储库被搞砸了,其中一个我有另一个很好的副本(在部门开始从 TFS 迁移到 Git 之前,我已经成功地克隆了它以供我自己私人使用 Git)。另一个我没有预先存在的副本,每次我尝试克隆它时都会遇到同样的问题。
之前的两个解决方案可以修补回购的当前状态,但当然没有说出历史的真相。如果有任何可能的方法来做一些类似的事情,那还是很好的git tfs repair
。
当您已经有另一个没有差异的回购时
我将我的好回购作为远程添加到我试图修补的回购中:
git remote add goodclone C:/path/to/good/clone
然后我从那个远程获取:
git fetch goodclone
Git 发出警告,指出所有提交都不相同(这是因为它们已在不同时间通过 Git-TFS 从 TFS 克隆)。我知道这是真的,所以没关系。这只是意味着克隆需要更长的时间。
我签出了一个分支master
来做这项工作。
git checkout -b repair
我还从 good repo 的遥控器中检查了一个分支,这是一个很好的衡量标准:
git checkout -b goodclone-master goodclone/master
然后我合并:
git checkout repair
git merge --squash goodclone-master
我不得不修补一些东西,然后我承诺了。我再次运行 TFS-Git 同步过程,切换到 master 并拉下最新的更改,重新设置 master 上的修复分支,将其合并到 master,然后推送。
据我所知,现在情况很好!
当您没有另一个没有差异的回购时
我通过 TFS 克隆了存储库,然后使用 Vim 从 verify 命令的输出创建了一个脚本,以从 TFS 存储库复制文件。在脚本中,我必须mkdir -p
在复制文件之前对包含目录进行操作。然后我提交了文件来修补。它似乎有效,但有点像黑客。