1. 复制版本库
研发人员首先clone整个版本库
git clone git://10.1.1.35:9419/kernel-rk29.git git clone git://10.1.1.35:9419/gingerbread-rk29.git
2. 创建分支
默认clone下来的git库只包含master本地分支
master remotes/origin/HEAD -> origin/master remotes/origin/R91P1_all remotes/origin/R91P1_yd remotes/origin/master
修改前,需要建立客户版本的本地分支
git checkout -b R91P1_yd origin/R91P1_yd
3. 修改
git add ... git commit -m"..."
4. 服务器同步
修改提交到本地库后,上传到服务器,上传前注意和服务器上同步
git fetch git rebase origin/R91P1_yd
以上两步可用一步简写
git pull --rebase
5. 上传
上传服务器,注意本地分支名和服务器分支名不要搞错
git push origin R91P1_yd:R91P1_yd
git push的格式为
git push origin <本地分支>:<服务器分支>
若本地分支名和服务器分支名相同,则可简写为
git push origin <分支名>
注意不要不要不加任何参数地提交
1. 共性补丁
共性补丁直接打入共性补丁分支,如master
注意提交到master分支的修改将来会合入所有客户版本,并产生作用 因此确认补丁确实为共性问题时才可提交到master分支
如要提交到master分支,必须切到本地的master分支操作
git checkout master ... git pull --rebase git push origin master
以后可能会增加覆盖面稍小的共性分支,如竖屏版本,带GPS和3G版本等
2. 后预见的共性补丁
有些问题首先在客户版本上发现并修正测试通过
之后才发现别的客户版本也有此问题,因此将该问题列为共性问题
后预见的共性补丁提交如下
git checkout master git cherry-pick -x <补丁的commit id> git pull --rebase git push master
1. 切换客户分支
git checkout R91P1_yd
2. 和服务器同步
git pull --rebase
3. 合并master
git merge origin/master
若有冲突,与提交者沟通解决冲突
4. 如有需要,合并应用组提交的分支
git merge origin/frameworks_ui
若有冲突,与应用组沟通解决冲突
5. 编译测试
6. 打tag
git tag R91P1_yd_1.0.7_20110826
7. 提交
git push origin R91P1_yd
如果失败,说明服务器上又有更新,此时合入服务器上的更新并提交
git fetch git merge origin/R91P1_yd git push origin R91P1_yd
8. 提交tag
git push --tags