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

微软现在在Team Foundation Service上支持Git仓库。 我在Team Foundation Service上有一个账户,我想把现有的Git仓库推到那里。

每当我尝试search时,我都会继续寻找像TFS-GIT或GIT-TF的东西。 我敢肯定,我不想要那些,因为我认为那些更改为代码库的Team Foundation Server模型,这不是我想要的。

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

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

  1. 在TFService中创build一个新项目
  2. 在Visual Studio中连接到该项目
  3. 在Visual Studio中克隆该项目
  4. git pull c:\source\oldGitProject

就是这样,它从旧的位置拉出了所有的变化,我可以很容易地把它推到TFService上。

“我如何将现有的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)创build一个新的空回购,并推动你的本地回购。


(原文答案)

如果我理解Scott Hanselman的博客文章 :

这个Git支持需要VS2012.2(目前在预览中),所以你需要首先安装,然后得到VSIX。 VS2012.2发布的时候,你可以同时更新,而Git VSIX将会继续通过VS Gallery自动更新。

它是一个完整的VS源代码提供者,所以你可以使用它来做大部分的事情,而不用离开VS,或者你可以在命令行挂出来,用它作为你的仓库状态的视觉提示。

对于团队,您可以访问http://tfs.visualstudio.com并注册一个帐户,并免费获得5个用户。; 您可以selectGit或Team Foundation版本控制(TFVC)作为源提供者,并将所有Team Foundation敏捷,scrum或其他模板用于ALM工具

这里说明了Git项目的注册过程,同时指出您需要在VS 2012 Update 2(VS2012.2)的“社区技术预览”之上进行Git VSIX的“社区技术预览” 。

GFS项目在TFS

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

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

    git clone <repository url>

我们所需要做的就是改变现有的本地解决scheme/回购的服务器目标url。

所以:

  1. 在云(TFService)中,创build一个新项目并获取它的URL。
  2. 在本地机器上,在Visual Studio中打开现有的解决scheme/库,然后在包pipe理控制台(PMC)中运行以下命令

    git远程设置url来源https://new.url.here

  3. 使用视图>团队资源pipe理器>不一致的提交将现有的解决scheme/回购推送到新的项目。

这将推动本地回购,包括所有以前的提交到云中新的TFS项目。

Git命令行FTW。

所有这些都是更新.git文件夹中的configuration文件中的[url origin]属性,所以如果你想打开和编辑这个文件,你可以使用记事本。 恕我直言,这个命令更清洁,因为你不会意外地编辑一些其他设置的风险,也不必离开VS.

注意:如果推入步骤3的选项被禁用,则可能需要执行另一个本地提交,以便“肮脏”源代码树的头部,从而启用push命令。 我相信会有另一个git命令来做到这一点。

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

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

他们似乎有一个名为发布的内部命令(可能使用@VonC提到的–mirror命令?)

我不确定这是否还能工作。

今天遇到这个问题。 VonC的答案,添加TFS作为一个远程和使用git push --mirror tfs ,为我工作。 不过,提一些关于这个的更多的东西可能是有益的。

  1. 推后,Visual Studio仍然无法识别这个本地回购以任何方式连接到Team Foundation服务。 所以,你仍然需要select“连接到团队项目…”,并使用界面做一个“克隆”。 TFS的回购将被克隆,所有的东西都被推送。 在此之后,您将连接到TFS,并且应该能够在克隆中正常工作。

  2. 使用“–mirror”将推送所有本地引用,可能包括一些本地分支,这些分支在中央仓库中并不是真正想要的。 如果是这种情况,用'–mirror'推后,你应该使用git push tfs :<branchname>从TFS删除一个分支,以避免其他人以后拉你的本地分支机构。

  3. 或者,也可以不用'–mirror',而只需将所需的refs推入TFS repo中,就像其他任何git repo: git push tfs <refspec> 。 由于TFS回购在这个阶段仍然是空的,一个接一个的分支名字应该足够作为一个<refspec> 。 如果使用这种方法,你也可以使用使用git push -u ,这也将使分支你推入空的回购跟踪分支。

编辑:正如Edward Thomson的评论中所提到的,如果您的原始库被configuration为跟踪来自TFS远程的分支,从TFS克隆应该是不必要的。 所以git push -u <refspec>都应该把repo推到空的TFS repo上,并且还允许IDE识别原始的本地repo,因为它设置了跟踪。