我在github上有一个存储库,它有一个主分支(master)和一个分支用于一些实验工作.我做了一些提交并推到实验分支,一切都很好.
现在,在另一台机器上,我尝试克隆我的存储库(git clone repository),然后切换到实验分支(git checkout branchname),但每次我这样做时,我的头都会分离,我无法推动我的更改.我究竟做错了什么?我觉得我在某个地方缺少一个基本的git概念,但是阅读随机的git手册页并没有给我任何线索.
我是git的新手,所以我很抱歉,如果我是一个白痴,但我在文档中找不到任何可以帮助我重新认识的东西.
编辑
跟踪分支的概念是我所缺少的.现在我认识到这个概念一切都很清楚.就个人而言,我发现git branch --track
语法比直观更直观git checkout -b branch-name origin/branch-name
.
谢谢您的帮助!
# first time: make origin/branchname locally available as localname
git checkout -b localname origin/branchname
# othertimes
git checkout localname
git push origin
为方便起见,您可以对localname和branchname使用相同的字符串.
当您签出时,origin/branchname
您并未真正签出分支.
origin/branchname
是一个"远程"名称,你可以得到它们的列表
branch -a
如果启用了颜色,则本地分支将是一种颜色,而远程另一种颜色.
您必须首先在本地跟踪远程分支,以便能够切换到并对其进行处理.
git clone git@github.com:abc/def.git cd def
现在创建一个跟踪分支:
git branch --track experimental origin/experimental git checkout experimental
然后,在那里工作之后,只需按下到github
git push
为了扩展Kent的回复,在你做克隆之后,你所拥有的唯一分支(遥控器不计算)是你克隆的存储库中活动的分支 - 在你的情况下为master.
所以,首先你要创建一个新的分支来跟踪远程实验分支:
$ git branch experimental origin/experimental
然后检查出来:
$ git checkout experimental
但是,Kent是正确的 - 这两个命令可以组合在一起
$ git checkout -b experimental origin/experimental