2

我不确定我是如何进入这种状态的(*),但是我的 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”。但我不确定。

4

1 回答 1

2

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

如果您确定不想保留BandC提交(否则通过创建本地分支将它们临时保存),只需执行以下操作:

  • 进入您的.git文件夹并查找文件/refs/remotes/tfs/default
  • 编辑文件并将文件中的sha替换为提交的shaA
  • 从 tfs 获取

那应该很好!

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

于 2013-06-24T18:34:11.640 回答