如何将现有的Git存储库推送到Team Foundation Service

时间:2013-02-28 06:01:46

标签: git migration azure-devops

Microsoft现在在其Team Foundation Service上支持Git存储库。我在Team Foundation Service上有一个帐户,我想将现有的Git存储库推送到那里的项目。

每当我尝试进行搜索时,我会不断发现TFS-GIT或GIT-TF等内容。我很确定我不想要这些,因为我认为这些更改为代码存储库的Team Foundation Server模型,而这不是我想要的。

具体来说,我有一个现有的Git存储库,我想推送到TFService。

6 个答案:

答案 0 :(得分:31)

好吧,我显然过于复杂了。这就是我所做的。

  1. 在TFService中创建了一个新项目
  2. 在Visual Studio中连接到该项目
  3. 在Visual Studio中克隆该项目
  4. git pull c:\source\oldGitProject
  5. 就是这样,它从旧位置撤消了所有更改,我可以轻松地将其推送到TFService。

答案 1 :(得分:21)

  

“如何将现有的git存储库推送到TFService?”

一旦你在tfs.visualstudio.com上宣布了一个git repo(见下文),就把git repo url添加到你自己的本地仓库的遥控器上:

cd /path/to/local/repo
git remote add tfs url://tfs/git/repo
git push --mirror tfs

这足以将本地仓库的完整历史记录推回到TFS上的新上游仓库。

同样,我们的想法是在上游端(TFS)创建一个新的空仓库,并将您的本地仓库推送到它。


(原始答案)

如果我理解Scott Hanselman's blog post about it

  

此Git支持需要VS2012.2(目前处于预览状态),因此您需要先安装,然后获取VSIX。您将能够在VS2012.2发布时更新这两个版本,并且Git VSIX将继续通过VS Gallery自动更新。

     

它是VS的完整源代码提供程序,因此您可以在不离开VS的情况下使用它来执行大多数操作,或者您可以在命令行中闲逛并使用它来提供有关存储库状态的可视提醒。

     

对于团队,您可以前往http://tfs.visualstudio.com并注册一个帐户,免费获得5个用户。您可以选择Git或Team Foundation版本控制(TFVC)作为源提供程序,并为您的ALM工具使用所有Team Foundation敏捷,Scrum或其他模板

Git项目的注册过程为illustrated here,再次指出您需要“community technology preview” of the Git VSIX之上的“community technology preview” of VS 2012 Update 2 (VS2012.2)

Git project in TFS

答案 2 :(得分:9)

上面有一些好的答案,但我发现这更容易。

  • 创建本地Git存储库。 (或者在我的情况下,我将我的SVN存储库转换为Git。)
  • 转到visualstudio.com并创建新项目,将Git指定为源控件。
  • 单击VisualStudio.com中新项目中的“代码”菜单选项。
  • 屏幕将显示推送现有存储库的确切Git命令,包括唯一存储库的URL 。您所要做的就是将该命令复制并粘贴到Git命令提示符中。

    git clone <repository url>

答案 3 :(得分:5)

我们需要做的就是更改现有本地解决方案/ repo的服务器目标网址。

所以:

  1. 在云端(TFService)中,创建一个新项目并获取它的网址。
  2. 在本地计算机上,在Visual Studio中打开现有解决方案/ repo,然后在程序包管理控制台(PMC)中运行以下命令

    git remote set-url origin https://new.url.here

  3. 使用View&gt;团队资源管理器&gt; Unsynched Commits将现有解决方案/ repo推送到新项目。

  4. 这会将本地仓库(包括之前的所有提交)推送到云中的新TFS项目。

    Git命令行FTW。

    所有这一切都是更新.git文件夹中找到的配置文件中的[url origin]属性,因此如果要打开并编辑此文件,可以使用记事本。恕我直言这个命令比较干净,因为你不会冒不小心编辑其他设置的风险,也不必离开VS.

    注意:如果禁用了Step in step:3的选项,那么您可能必须执行另一个本地提交才能使&#34;脏&#34;源树的头部,从而启用push命令。我确定还会有另一个git命令来执行此操作。

答案 4 :(得分:1)

今天早上我发现的一个博客链接了这个文件:

http://blogs.msdn.com/b/visualstudioalm/archive/2013/02/06/set-up-connect-and-publish-using-visual-studio-with-git.aspx#publish-tfs

它们似乎有一个名为publish的内部命令(可能正在使用@VonC提到的--mirror命令?)

我不确定这是否有效。

答案 5 :(得分:1)

今天遇到这个问题。 VonC的回答是,将TFS添加为远程并使用git push --mirror tfs,对我有用。 但是,提及一些额外的事情可能是有益的。

  1. 推送后,Visual Studio仍无法识别此本地存储库是否以任何方式连接到Team Foundation Service。 因此,您仍然需要选择“连接到团队项目...”并使用界面执行“克隆”。来自TFS的回购将被克隆,只需要推送一切。 在此之后,您将连接到TFS,并且应该能够在克隆中正常工作。

  2. 使用'--mirror'将推送所有本地引用,可能包括您不希望在中央存储库中拥有的某些本地分支。 如果是这种情况,在使用'--mirror'推送之后,您应该使用git push tfs :<branchname>从TFS中删除分支,以避免其他人在以后拉动您的本地分支。

  3. 或者,代替'--mirror',应该可以将所需的引用推送到TFS仓库中,就像使用任何其他git仓库一样:git push tfs <refspec>。由于TFS repo在此阶段仍为空,因此一堆接一个的分支名称应该足够<refspec>。如果使用此方法,您还可以使用git push -u,这也会使您推入空回购跟踪分支的分支。

  4. 编辑:正如Edward Thomson的评论中所提到的,如果您的原始仓库配置为从TFS远程跟踪分支,则无需从TFS克隆。所以git push -u <refspec>应该将repo推送到空的TFS repo,并且还允许IDE识别原始的本地repo,因为它设置了跟踪。