git:切换分支而不分离头部
我在github上有一个主分支(主)和一个分支,用于一些实验性工作。 我做了一些提交,并推到实验分支,一切都很好。
现在,在另外一台机器上,我尝试克隆我的仓库(git clone repository ),然后切换到实验分支(git checkout branchname ),但是每当我这样做的时候,我的脑袋就会分离,我无法推送我的更改。 我究竟做错了什么? 我觉得我错过了一个基本的git概念,但读随机的git手册页并没有给我任何线索。
我是新来的混帐,所以我很抱歉,如果我是一个白痴,但我找不到任何文件,这将帮助我重新贴上我的头。
编辑
跟踪分支的概念就是我所缺less的。 现在我对这个概念有了一个清楚的认识。 就个人而言,我发现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相同的string
当你检查出来的origin/branchname
你不是真的检查出一个分支。 origin/branchname
是一个“远程”的名字,你可以用它来得到它们的列表
branch -a
如果启用了颜色,本地分支将是一种颜色,远程另一种。
您必须首先在本地跟踪远程分支,以便能够切换到并进行处理。
git clone git@github.com:abc/def.git cd def
现在创build一个跟踪分支:
git branch --track experimental origin/experimental git checkout experimental
然后,在那里工作,只需推Github的
git push
为了扩大肯特的答复,在做完克隆之后,你将拥有的唯一分支(遥控器不计算在内)就是在你克隆的存储库中处于活动状态的那个分支。
所以,首先你要创build一个新的分支来跟踪远程实验分支:
$ git branch experimental origin/experimental
然后检查出来:
$ git checkout experimental
但是,肯特是正确的 – 这两个命令可以合并
$ git checkout -b experimental origin/experimental