1.远程分支
先看图,不说话
git fetch origin 之后……
注意:git fetch 命令会更新 remote 索引。
看完图之后,以下语法要搞清楚:
推送本地serverfix -> serverfix(origin): $ git push origin serverfix
通过此语法,你可以把本地分支推送到某个命名不同的远程分支:
若想把远程分支叫作 awesomebranch
,可以用: git push origin serverfix:awesomebranch
来推送数据。
接下来,当你的协作者再次从服务器上获取数据时($ git fetch origin),他们将得到一个新的远程分支 origin/serverfix
:
值得注意的是,在 fetch
操作下载好新的远程分支之后,你仍然无法在本地编辑该远程仓库中的分支。换句话说,在本例中,你不会有一个新的 serverfix
分支,
有的只是一个你无法移动的 origin/serverfix
指针。
如果要把该内容合并到当前分支,可以运行 git merge origin/serverfix
。
如果想要一份自己的 serverfix
来开发,可以在远程分支的基础上分化出一个新的分支来:$ git checkout -b serverfix origin/serverfix
(git checkout -b [分支名] [远程名]/[分支名]。)
从远程分支 checkout
出来的本地分支,称为跟踪分支(tracking branch)。
在跟踪分支里输入 git push
,git pull
Git 会自行推断。
$ git checkout --track origin/serverfix 相当于$ git checkout -b serverfix origin/serverfix
删除远程分支 git push [远程名] :[分支名]。
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge:git fetch origin master
2. git pull:相当于是从远程获取最新版本并merge到本地:git pull origin master
2.衍合:
例子:
$ git checkout experiment
$ git rebase master
它的原理是: 回到两个分支最近的共同祖先C2,生成一系列文件补丁,放在C4后面(master的后面),得到(C3'),以及experiment分支。
例子:
$ git rebase --onto master server client
它的原理是:首先找到server client共同的节点c3,将C3到Client的C8,C9 rebase……