git问题:创建分支时出错,无法再推送到掌握

时间:2010-05-13 13:33:34

标签: git

我做了

git checkout -b foo origin/master
git push origin foo

创建分支并将其推送到远程仓库。这显然是错误的方式(我是一个git初学者)。但除了错误之外,它还造成了一个更为严重的问题: 现在我们再也无法掌握了!

删除新分支(“foo”)没有帮助。 克隆一个新的回购也没有帮助。 关于可能有助于识别问题的副作用的另一个信息:Unfuddle(一个git托管站点,类似于github)将新创建的分支显示为HEAD。删除该分支后,master再次显示为HEAD,但之后所有其他正确创建的分支(git branch foogit push origin foo)再次显示为HEAD ...

目前没有人可以掌握,这不仅仅是我。

到目前为止谷歌无法帮助......你呢?

非常感谢!

更新:这个问题已经通过提交来解决了......但我们仍然不知道出了什么问题,并且会对解释感兴趣。但显然这已经失去了紧迫感。

回答你的问题:

  • 不,推送时根本没有错误消息。它只是没有这样做。
  • git ls-remote <remote>只展示了我们已经知道的东西,foo现在是HEAD。

3 个答案:

答案 0 :(得分:1)

实际上你的第一个命令创建了一个名为foo的所谓跟踪分支,它将通过origin / master引用来跟踪远程分支master

这意味着你现在有了它们之间的关系,允许你使用无参数的推/拉命令

你的第二个命令在远程端创建了一个分支foo并重新定义了关系,所以现在本地foo正在推送到远程foo但是可以直接从master获取。您可以通过执行以下内容来查看:

git remote show origin

我不知道你的最终目标是什么,但我建议使用干净的主题分支方法,而不是尝试将主题分支链接到远程主分支。

所以你不得不执行以下操作:

git checkout -b foo master #create topic branch foo from the current state of local master

git push origin foo #create remote branch foo and setup direct relationship, if you really need to have it on the remote repo, but that's questionable

所以我建议使用以下工作流程:

git checkout foo
...commit, commit...
git checkout master
git pull      #to update local master in case if there were changes made while you were working on  foo
git merge foo # to merge foo changes into master
git push # push local master to remote

答案 1 :(得分:0)

您无法推送,因为您只创建了一个本地分支。如果这是你想要的,你也需要遥控器。您需要创建远程分支,并设置本地以跟踪它:

git push origin origin:refs/heads/foo
git checkout --track -b foo origin/foo
git push

答案 2 :(得分:0)

如果你想把foo推到掌握,你必须做

  

git push origin foo:master