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