43

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

每当我尝试进行搜索时,我都会不断寻找 TFS-GIT 或 GIT-TF 之类的东西。我很确定我不想要这些,因为我认为这些更改为代码存储库的 Team Foundation Server 模型,而这不是我想要的。

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

4

6 回答 6

31

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

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

就是这样,它从旧位置提取了所有更改,我可以轻松地将其推送到 TFService。

于 2013-03-02T23:11:54.137 回答
21

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

在 tfs.visualstudio.com(见下文)上声明一个 git repo 后,将该 git repo url 添加到您自己的本地 repo 的远程:

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

这足以将本地存储库的完整历史推回 TFS 上的新上游存储库。

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


(原答案)

如果我了解Scott Hanselman 的博客文章

此 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 项目的注册过程,再次指出在VS 2012 Update 2 (VS2012.2)的“社区技术预览”之上,您需要Git VSIX的“社区技术预览” 。

TFS 中的 Git 项目

于 2013-02-28T07:12:47.297 回答
10

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

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

    git clone <repository url>

于 2014-01-06T18:57:23.067 回答
5

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

所以:

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

    git 远程 set-url 来源https://new.url.here

  3. 使用 View>Team Explorer>Unsynched Commits 将现有解决方案/存储库推送到新项目。

这会将本地存储库(包括所有以前的提交)推送到云中的新 TFS 项目。

Git 命令行 FTW。

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

注意:如果在 step: 3 中的 Push 选项被禁用,那么您可能必须执行另一个本地提交才能“弄脏”源代码树的头部,从而启用 push 命令。我敢肯定还会有另一个 git 命令来执行此操作。

于 2014-06-25T10:12:57.477 回答
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 命令?)

我也不确定这是否有效。

于 2013-02-28T16:26:43.870 回答
1

今天遇到了这个问题。VonC 的回答,将 TFS 添加为远程并使用git push --mirror tfs,对我有用。但是,提及一些有关此的其他内容可能会有所帮助。

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

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

  3. 或者,应该可以将所需的 refs 推送到 TFS 存储库中,而不是“--mirror”,就像您对任何其他 git repo: 一样git push tfs <refspec>。由于在这个阶段 TFS 存储库仍然是空的,一堆一个接一个的分支名称应该足以作为<refspec>. 如果使用此方法,您也可以使用 use git push -u,这也会使您推送的分支进入空的 repo 跟踪分支。

编辑:正如 Edward Thomson 的评论中提到的,如果您的原始存储库配置为从 TFS 远程跟踪分支,则从 TFS 克隆应该是不必要的。因此git push -u <refspec>,既应将 repo 推送到空的 TFS repo,又应允许 IDE 识别原始本地 repo,因为它设置了跟踪。

于 2013-03-01T15:43:53.140 回答