如何用git-tfs清理破碎的历史记录

时间:2013-06-24 15:57:13

标签: git git-tfs

我不知道我是如何设法进入这种状态的(*),但是我的tfs / default远程分支中有一些提交在TFS中不存在,所以我想摆脱它们。所以我的历史看起来像这样:

A--B--C--D tfs/default

...但是提交B和C实际上并不是TFS中的变更集。因此,当我签出tfs / default时,由于提交B和C,我与TFS不同步。不好。

我想我可以修复它,如果我能以某种方式将tfs / default远程重置为A并执行另一个“git tfs fetch”以结束实际历史记录:

A--D tfs/default

但我不确定该怎么做?


*)如果它有任何区别,我认为它涉及在B和C上使用“git tfs shelve”,可能后面跟着一些提交和“git tfs pull”。但我不确定。

1 个答案:

答案 0 :(得分:2)

是的,你有一半的答案!您应该将tfs/default重置为上一步并获取。在git中没有办法做到这一点(如果我知道的话),因为这不是正常情况,但我们仍然可以通过编辑git文件来做到这一点......这很容易!

如果您确定不想保留BC提交(否则通过创建本地分支将其保存为临时),请执行以下操作:

  • 进入.git文件夹,查找文件/refs/remotes/tfs/default
  • 编辑文件并使用提交A
  • 的sha替换文件中的sha
  • 从tfs获取

这应该是好的!

编辑:也可以使用命令行git update-ref tfs/default SHAofcommitA

完成