场景
远程有一个develop分支,我想获取到本地,但是clone该项目的时候这个远程分支还没有创建,于是执行 git checkout commit_id(develop)
提示如下
1 | $ git checkout f7c774b |
出现 detached from ...
此时用git branch -av
察看分支1
2
3
4
5
6
7$ git branch -av
* (detached from f7c774b) f7c774b update jeffsui.github.io
master 6ce1857 Site updated: 2016-08-07 22:09:10
remotes/origin/HEAD -> origin/master
remotes/origin/develop f7c774b update jeffsui.github.io
remotes/origin/gh-pages 1eee93f Site updated: 2016-02-13 21:03:46
remotes/origin/master 6ce1857 Site updated: 2016-08-07 22:09:10
所谓的 detached HEAD
其实就是HEAD
指向的是一个commit
而不指向任何一个branch
的临时分支,翻译过来就是游离
.
众所周知,每一个分支都对应了一个commit,git checkout
其实就是修改HEAD
文件内容,让它指向不同的分支.
如何让detached HEAD
所处分支指向远程分支
此时的分支你可以执行commit
操作,但是无法push
到远程分支。
那么我们如何把游离状态的分支指向我们指定的远程分支呢。1
2
3$ git fetch origin develop:develop
From https://github.com/jeffsui/jeffsui.github.io
* [new branch] develop -> develop
继续执行git branch -av
命令查看分支
1 | $ git branch -av |
此时我们发现多了一个develop
分支指向了远程develop
分支,这样我们就可以通过命令git push origin develop:develop
到远程分支了。
更简洁的方法
git fetch origin develop:develop
or
git checkount -b origin develop:develop
这样可以直接获取远程分支并创建一个本地分支。