如何将未同步的提交推送到GitHub?

27

我在我的 Visual Studio 2013 中添加了 GitHub 源代码控制工具,当我右键单击解决方案并进行提交时,它会显示已在本地创建该提交。但是,当我尝试将提交与服务器同步时,同步按钮是灰色的。

我的问题是:我如何设置或采取哪些步骤,以便将提交推送到服务器?

enter image description here


你混淆了git和GitHub。看起来你实际上没有GitHub仓库。你需要添加一个远程仓库。 - SLaks
我在我的在线个人资料中有一个代码库。将其设置为与Visual Studio链接只是一个简单的问题吗? - Brian Var
4个回答

44

看起来你没有为这个分支配置上游远程/分支。Visual Studio运行的方式就好像"push.default"配置设置为"upstream"一样。

如果你前往分支页面,这个分支应该会列在"未发布"分支部分下。从那个页面,你可以右键点击未发布的分支,选择发布,在弹出的上下文菜单中进行操作。这将会推送这个分支到原始远程(使用与你本地分支相同的名称)并为这个分支设置上游跟踪信息。从此以后,您可以从未同步提交页面推送和获取。

这里是你需要前往发布未发布分支的截图:

发布未发布分支


好的,我打开了分支页面,显示未发布的分支--> 主干,但是像您所说的"发布"选项并不明显。有什么想法吗? - Brian Var
我右键点击未发布的分支,只给了我查看分支的选项。 - Brian Var
1
我添加了一个屏幕图像,显示你需要前往哪里发布未发布的分支。希望这会使事情更加清晰。如果您看到的不是这样,那么我们就需要看看还有什么其他问题。 - jamill
1
我得到了相同的屏幕,但是当我右键单击时,它只给出了新建分支、合并或查看历史记录等选项。它不允许发布。 - Brian Var
1
我今天还发现远程存储库在仓库设置中必须命名为“origin”,否则“发布分支”选项将变灰。 - Edgar
显示剩余3条评论

4
你需要将在线的GitHub repo添加为本地git repo的远程仓库。
在命令行上,这样做是通过执行git remote add origin <url>实现的;我不知道VS git UI是否提供这个功能。

我收到了“命令语法不正确”的错误提示,url参数是指我的git hub账户上存储库的地址吗? - Brian Var
不是的,它是存储库页面右下角的URL字段。 - SLaks
我仍然遇到相同的错误,这行代码之前需要执行一组命令吗?目前我只是在cmd上打开git并执行上述命令。 - Brian Var
你移除了箭头吗? - SLaks
没有箭头尝试过,它显示了一个新的空提示符。我猜这意味着它成功了? - Brian Var

2
我们使用Atlassian Stash,但最初在Visual Studio的用户界面上感到有些困惑。我们使用 仅限于UI 的以下步骤:
  1. 首先,您必须通过Team Explorer > Home > Git > Git Settings在Git全局设置中添加您的“用户名”和电子邮件地址。
  2. 在“Solution Explorer”选项卡上,右键单击解决方案并选择“将解决方案添加到源代码控制”,然后选择Git。
  3. 在“Team Explorer”选项卡上,单击您刚创建的存储库,然后转到分支。
  4. 选择主分支,右键单击它并选择“发布”-系统将要求您输入远程URL,之后您将获得一个用户名/密码提示(用于远程服务器,即GitHub、Stash等)。
    • 所有这些都只是执行git push origin master,但Microsoft选择使用另一个名称使其变得混淆。
  5. 等待“发布”完成(UI中会显示文件传输状态)。
  6. 完成后,转到提交选项卡,您将看到Push/Pull/Fetch等所有选项都可用。

注意:如果您在本地创建了另一个分支,则必须将该分支推送或“发布”到远程之前,远程才能知道它。

最后说明:Visual Studio不会为您在远程创建项目和存储库。您必须确保在远程设置了存储库,然后才能将分支推送到它。

奇怪的问题:我们发现,如果您尝试将分支推送到某个分支但失败(由于URL不正确或权限问题),则必须返回到命令提示符以“修复”存储库/分支的远程配置。这是使用标准git命令执行的:

git remote add origin https://myuser@stash.mycompany.com/scm/myproject/myrepo.git


更新:Visual Studio 2015(企业版)会自动从你的/git仓库文件夹中读取配置。我不需要在IDE中进行任何设置。 - Shanerk

0

在像@jamill的答案中发布分支后,您可能会遇到这个问题。

在Team Explorer中,我能够发布一个分支,但是接下来我什么也做不了。拉取和推送都被禁用了,如下所示:

enter image description here

所以我执行了操作 > 打开命令提示符。然后输入:

git push origin My_Branch_Name

在进行此操作之后,我可以在我的远程分支中看到我的提交记录。(在你的情况下,可能是Github或其他)同时,在运行该命令时,输出显示如下:
remote: Create pull request for My_Branch_Name: 

如果您想要保留这个分支并将其合并到主分支中,则可以在您的远程代码库上创建一个 pull request。否则,像我的情况一样,我想放弃这个分支。您不需要做任何操作。

有点奇怪。我想我只是使用 Visual Studio 中的 UI 使它工作了。也许这是一个 UI 的问题。我右键点击分支并执行 发布。耸耸肩。 - Jess

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接