2013-04-01 58 views
1

我有一个现有的git repo,我被迫放在tfs中。我想使用git-tfs工具,但无法弄清楚我的生活如何做到这一点。我见过的所有例子都是从git tfs clone开始的,但我已经有了一个git repo,并且希望对它执行“签入”操作。git-tfs从git开始

编辑:我试着根据我需要的相反的场景来组装说明。我试图创建一个空的项目,并添加到tfs,然后从git复制我的代码,但我失去了我的历史(我不想)。我在这里寻找的是一套完成我所需要的步骤。

+0

什么不起作用? [你有什么试过](http://mattgemmell.com/2008/12/08/what-have-you-tried)? – iltempo

回答

4

事实上,git-tfs只能通过克隆TFS存储库来工作。

我只是希望你没有太多的分支机构检入TFS,否则它会很长很无聊但可行!

首先,在tfs中创建一个空的存储库。

旧的解决方案(仍然有效,如果你想采取这种方式......):并用tfs克隆它。你应该可以很容易的完成,并且在这个新的git仓库中应该只有一个没有文件的提交。

现在,向您现有的git存储库添加一个远程控制器,并将远程主控制器重新绑定到新存储库的初始提交上。

新的解决方案:使用this script

然后使用 'git的TFS rcheckin' 提交所有的历史。它应该是非常长的:(

之后,如果你有你想要提交的分支,并且如果你有最后一个版本的git-tfs 0.17.1,提取好的修订版并创建一个tfs分支命令:

TFS的Git分支Name_of_my_branch

和重订混帐分支的所有的提交和使用rcheckin有: git的TFS rcheckin -i Name_of_my_branch

做到这一点对所有的分支和应该不错...

但我要补充一点,如果你有合并提交,他们都将在此过程中丢失:( 你不会有比你现有的Git仓库

PS一个美丽库:

+0

明天我会检查一下。因为它只是2012年,而且我的公司在它已经过时之前不会更新任何东西,所以不要再热衷于此。 – poindexter12

+0

我试着将“远程主机重新绑定到初始提交”上,我假设你的意思是'git rebase - 主控主@ {0} myremote/master' – adrianm

+0

我试过了,提交已正确重新发布到主控上, tfs-ancestor使'git tfs rcheckin'失败。在[SourceTree](http://www.sourcetreeapp.com/)中,'tfs/default'显示为完全孤立的提交。另一个从原始git-repository中取出的尝试将历史压缩成一个合并提交,其中'tfs/default'作为其中一个祖先和rcheckin的工作。 – Grastveit