20
votes

About a week ago Git support was added to Visual Studio 2012 and Team Foundation Service. I've been playing around with it a bit and wanted to publish a local repository to my team project. It's described in step 2 on the Team Foundation Service website:

  • Publish your local Git repository into your new team project.

enter image description hereenter image description here

Now I've been doing the exact same thing, but I don't get the "Publish to ..." context item. Could this be a bug or am I missing something?

enter image description here

12
Are you logged in when you try to do this?Roman
Yes, I'm logged in to my Team Foundation Service using my Microsoft Account which is also the account I've used to create the "Gittyup" Team Project.basvo
Cool, just trying to get the really obvious out of the way.Roman

12 Answers

12
votes

I was having the same problem. I don't know why.

However, after a bit of playing around, I managed to get the following working. Disclaimer: can't guarantee this is actually the correct way to do it. It may bork things further. And whether it does the same as what the missing 'Publish' menu item is supposed to do, I have no idea. Use at your discretion...

  • Get the url of your git repo in the project you set up in TFS.
  • Edit the .git/config file on your local repo.
    • Configure the origin remote to point to your TFS repo.
    • (note: if you already had an origin remote, you might want to rename that first to keep it)

e.g.

[remote "origin"]
    url = https://user.visualstudio.com/DefaultCollection/_git/YourRepo
    fetch = +refs/heads/*:refs/remotes/origin/*
  • Open your solution in Visual Studio.
  • Edit a file.
  • Do a commit.
  • Do a push.

This should hopefully push your local repo to your TFS remote as origin.

From here things seem to be working for me -- the code is up in my TFS web interface at least, and I can push commits to it. I can add backlog items etc. I'm new to TFS though so not sure if it's actually all working as it should be.

6
votes

I was just having the same problem, and the answer by ngm didn't work; I had to do the opposite. The [remote "origin"] section was already in my .git/config file, however the project code wasn't uploaded to TFS.

To fix it I just deleted that section from the config file, then restarted Visual Studio and followed the official instructions.

3
votes

I had this same exact problem. I was able to resolve it by restarting Visual Studio completely, opening Team Explorer, then navigating to my local repo. I opened up my local .sln, then clicked on "Changes", "Commits" and it then had an area where I could Publish the project to a URL. I took that URL such as: https://myapps.visualstudio.com/DefaultCollection/_git/MySolution and then clicked "Publish" (I had to do it twice.) I can now commit to the TFS and view my code online.

2
votes

I had the same issue. I had to delete all of my remotes in .git/config (not just origin) before the Publish option is available. Apparently, Microsoft assumes you would never even dream of using a different remote.

1
votes

I found it helped to start a new solution and publish from there going step by step.

Once it's 'confused' itself it's best to start the process over. I got it working and never had to edit that file.

1
votes

I tried all of the above but the only way I could get it to work was to use git hub for windows.

To make that work you will need to set up alternate credentials. https://tfs.visualstudio.com/en-us/home/news/2012/aug-27/

1
votes

For submitting an existing local repository to TFS-Git:

  • Create new project in TFS.
  • Using Git Extensions, select the local repository that you want to push to your new project in TFS.
  • Select the push arrow.
  • Select Manage remotes.
  • In URL, enter the location of your TFS project: https://[your site name].visualstudio.com/DefaultCollection/_git/[Your project name]
  • Save. Do you want to automatically configure push and pull? (I said yes.)
  • Close.
  • Select dropdown box for Remote - select the Remote URL you just saved.
  • Push.

While setting up my account at TFS, I did set up an alternate credentials, though I am not sure if they were needed for this process.

I am new to GIT and TFS, but this process allowed my to push two of my solutions, each with three projects into TFS. Also, within Git Extensions, I found that I could organize my local repositories into categories, which proved a convenient way to organize my projects into their solutions. I would like to do the same in TFS, too.

1
votes

I had the same problem today, I was not understanding why this "Publish to..." menu didn't appear. I found that it's because you have to map one online repository to a local one, no more.

In your example, it seems Gittyup online is already mapped to Gittyup local, so you have to create a new Git project in the web interface, then you connect to it in VS, and then you can publish your local repository to the online one.

1
votes

In the Team Explorer window find your repository under Local Git Repositories. Right click on the one you want to change and pick Open Command Prompt. Now type git remote -v and it should show you the remote name and the complete url for it. type git remote remove origin assuming origin is the name of your remote repository. Then git remote add origin [url] replacing [url] with the actual url of your repository.

Now you should be able to push your master branch into the repository for your team project.

1
votes

I can confirm other answers, that the GIT repo cannot have any remotes listed or VS13 won't add it to the team project. I was using Atlassian tools Stash / Bitbucket / SourceTree and as soon as I closed VS13, removed all the remotes, reopenened VS13, opened the team project, and right clicked on my local GIT repo. The option "Publish to {teamProject}" was available and the .sln was then available by opening the team project.

0
votes

Same problem here, except instead of editing git config files, just delete the entire git repository folder for the project. Reload the project and start over with Source Code action under file. Then add all changes to the project to the local Git. Then "Sync" and it will display the url textbox.

0
votes

Create the project in VSTS/GitHub/somewhere, then from Git Bash...

git remote add origin https://xxx.somewhere.com/_git/xxxProjectNamexxx
git push -u origin --all