1. clone代码
命令: git clone git:mt8735_m0_v1.0.3
说明: 克隆下来的代码, 默认为master分支,远程分支为remote/origin/master。
HEAD指向当前所在的分支(master)。
remote/origin/master中,origin为默认的远程机器名,master为远程分支名称。
图示:
注:在包含“.git”的目录中,执行以下命令
scp git:hooks/commit-msg .git/hooks/
2. 建立bug分支(比如mantis100用于修改mantis上的bug#100)
命令: git checkout -b mantis100
说明:命令执行完成后, 会自动创建并切换至mantis100分支,因此HEAD会指向此分支(mantis100)。
图示:
3. 修改bug#100并在mantis100分支上进行提交
命令: git add, git commit
说明:在修改bug#100的过程中,服务器上会有新的提交(S4,S5)。
mantis100分支指针会随着提交而移动,始终指当前分支的最后一次提交(L1,L2)
由于没有直接在master分支提交,master指针不变。
remote/origin/master指针在(通过fetch, pull等同步命令)与服务器同步前始终不变。
图示:
4. 使用fetch指令获取服务器上的更新
命令: git fetch origin
说明:fetch只会把服务器上的更新拉取到本地,不会与本地的master分支进行合并。
remote/origin/master会始终指向获取到的最后一个远程修改。
图示:
5. 切换至master分支
命令: git checkout master
说明:其实就是HEAD指针指向master, mantis100和master指针均不变
图示:
6. 使用rebase命令更新master分支
命令: git rebase origin/master
说明:目的是使master分支与remote/origin/master分支保持一致, 为后面的cherry-pick做准备
由于master分支上没有在本地提交过修改,因此这个指令不会导致合并动作, 仅将master分支的指针移动至remote/origin/master所指向的节点。
图示:
7. 使用cherry-pick命令追加mantis100分支上的修改
命令: git cherry-pick L1,git cherry-pick L2
说明:有选择性地将L1或L2追加到master分支的末尾,这部分被追加的修改将会被推送到服务器。
图示:
8. 删除mantis100分支
命令: git branch -d mantis100
说明:此时mantis100上的修改已经追加到master分支上准备push了,因此mantis100分支已经完成了它的历史使命,可以删除了。
不建议继续在这个分支上进行开发, 否则会导致分支间的关联过于复杂而产生各种依赖问题。
图示:
9. 使用push命令推送修改至review服务器
命令: git push origin HEAD:refs/for/master
说明:master分支上,在remote/origin/master之后的修改将被推送至代码审核服务器
注意:各个修改的change-id不能相同,否则会出错。
注: 第5步至第7步也可以通过直接在mantis100分支上使用rebase指令来实现。基本思路为:
当remote/origin/master已经通过fetch命令更新了以后,在mantis100分支上:
1. 直接将mantis100分支的修改rebase到remote/origin/master,git rebase origin/master
2. 如果rebase过程中产生冲突,需要手动解决冲突并add修改后文件,再执行rebase –continue
3. 切换回master,并将master分支直接rebase到mantis100分支
4. 删除mantis100分支。
来自:http://www.jianshu.com/p/60fac8b97465
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/5484/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料