2013-06-24 45 views
2

我不知道我是如何设法进入这个状态(*)的,但是我在我的tfs/default远程分支中有一些提交没有存在于TFS中,所以我想摆脱它们。所以我的历史看起来像这样:我怎么能用git-tfs清理破损的历史记录

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

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

我想我可以修复它,如果我能以某种方式重新设置TFS /远程默认为,做一套“混帐TFS取”与实际的历史结束了:

A--D tfs/default 

,但我不当然如何做到这一点?


*)如果这有什么差别,我认为这涉及到使用“混帐TFS搁置”在B和C,也许其次是一些提交和“混帐TFS拉”。但我不确定。

回答

2

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

如果你确信你不想保持BC提交(否则它们保存临时通过创建一个本地分支),只需做到以下几点:

  • 进入您的.git文件夹查找文件/refs/remotes/tfs/default
  • 编辑该文件,并替换的SHA文件中的沙提交A
  • 从TFS获取

而且应该很好!

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

+0

太棒了!这么简单,并且完美地工作。干杯! – Anders

+0

嗯不会'git reset --hard SHAofcommitA && git fetch'就够了吗?据我所知,这是正确的方式。 – Learath2

+1

不,我不认为是因为他想移动由git-tfs而不是git分支管理的远程... – Philippe