我做了
git checkout -b foo origin/master
git push origin foo
创建分支并将其推送到远程仓库。这显然是错误的方式(我是一个git初学者)。但除了错误之外,它还造成了一个更为严重的问题: 现在我们再也无法掌握了!
删除新分支(“foo”)没有帮助。
克隆一个新的回购也没有帮助。
关于可能有助于识别问题的副作用的另一个信息:Unfuddle(一个git托管站点,类似于github)将新创建的分支显示为HEAD。删除该分支后,master再次显示为HEAD,但之后所有其他正确创建的分支(git branch foo
和git push origin foo
)再次显示为HEAD ...
目前没有人可以掌握,这不仅仅是我。
到目前为止谷歌无法帮助......你呢?非常感谢!
更新:这个问题已经通过提交来解决了......但我们仍然不知道出了什么问题,并且会对解释感兴趣。但显然这已经失去了紧迫感。
回答你的问题:
git ls-remote <remote>
只展示了我们已经知道的东西,foo现在是HEAD。答案 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