GIT操作手则


(1)xiongmc@xiongmc-desktop:~/gpad_1/L01_BJ_MTK6575_ICS_V1.13_120509$ git push origin APP_GPAD_NCR20120601_xiongmc:gpad_main_dev

To gitserver:/L01_BJ_MTK6575_ICS_V1.13_120509
 ! [rejected]        APP_GPAD_NCR20120601_xiongmc -> gpad_main_dev (non-fast-forward)
error: failed to push some refs to 'gitserver:/L01_BJ_MTK6575_ICS_V1.13_120509'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.


(2)xiongmc@xiongmc-desktop:~/gpad_1/L01_BJ_MTK6575_ICS_V1.13_120509$ git branch 
  APP_GPAD_NCR00010358_xiongmc
  APP_GPAD_NCR20120601_xiongmc
* master
分析问题。
检查,以便了解彼此之间的逻辑关系,并且还可避免缺乏思想的句子出现。怎么检查,大多最有效的方法是排序(git branch),然而不能就此止步,还需进一步思考。以便发现相互之间的逻辑关系。就如上所示,在出现了冲突后,应立即将当前所在branch列举,因为这样能确保是否在所需提交branch上操作。如不在当前提交branch上,立即切换到当前branch.如下所示:
xiongmc@xiongmc-desktop:~/gpad_1/L01_BJ_MTK6575_ICS_V1.13_120509$ git checkout APP_GPAD_NCR20120601_xiongmc 
Switched to branch 'APP_GPAD_NCR20120601_xiongmc'
xiongmc@xiongmc-desktop:~/gpad_1/L01_BJ_MTK6575_ICS_V1.13_120509$ git branch 
  APP_GPAD_NCR00010358_xiongmc
* APP_GPAD_NCR20120601_xiongmc
  master


(3)确定了当前的branch后,然后将服务器(远程服务而非本地服务)的branch(gpad_main_dev)合并到当前branch(APP_GPAD_NCR20120601_xiongmc),如下:
xiongmc@xiongmc-desktop:~/gpad_1/L01_BJ_MTK6575_ICS_V1.13_120509$ git merge origin/gpad_main_dev 
Merge made by recursive.
。。。。
。。。。。。
。。。。。。。


注意:在合并的过程中,可能会存在冲突(conflict),因为服务器(远程服务)上的文件可能已被其他人操作过(添加,删除,修改等)。一旦解决完冲突后,本地服务器代码已经是最新版本了。例如:2012-6-21发生的conflict.


# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified:      alps/packages/apps/Contacts/res/values-zh-rCN/strings.xml
# both modified:      alps/packages/apps/Contacts/res/values/strings.xml
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# alps/.classpath
# alps/.project
# alps/bin/
xiongmc@xiongmc-desktop:~/gpad_77_p0/L01_BJ_GPAD_MTK6577_ICS_P1_120615$ git mergetool
merge tool candidates: meld opendiff kdiff3 tkdiff xxdiff tortoisemerge gvimdiff diffuse ecmerge p4merge araxis emerge vimdiff
Merging the files: alps/packages/apps/Contacts/res/values/strings.xml
alps/packages/apps/Contacts/res/values-zh-rCN/strings.xml


Normal merge conflict for 'alps/packages/apps/Contacts/res/values/strings.xml':
  {local}: modified
  {remote}: modified
Hit return to start merge resolution tool (meld): merge tool candidates


Normal merge conflict for 'alps/packages/apps/Contacts/res/values-zh-rCN/strings.xml':
  {local}: modified
  {remote}: modified
Hit return to start merge resolution tool (meld):  merge tool candidates


(3.2)解决了冲突后,别忘了提交到本地库:git commit -a


(4)由于合并服务代码已经是最新代码,为了将本地代码同步到远程服务代码,以便提供别人使用(统一最新版本,即生成下一个开发版本)。下一步将本地服务代码(当前分支:APP_GPAD_NCR20120601_xiongmc)推送到远程服务分支(远程分支:gpad_main_dev)。需要执行如下命令:


xiongmc@xiongmc-desktop:~/gpad_1/L01_BJ_MTK6575_ICS_V1.13_120509$ git push origin APP_GPAD_NCR20120601_xiongmc:gpad_main_dev
Counting objects: 166, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (86/86), done.
Writing objects: 100% (92/92), 55.01 KiB, done.
Total 92 (delta 65), reused 1 (delta 0)
To gitserver:/L01_BJ_MTK6575_ICS_V1.13_120509
   a6f434f..b8ba113  APP_GPAD_NCR20120601_xiongmc -> gpad_main_dev






总结:为了在最新版本上开发,需要获取代码,步骤如下:
(1)首先拉取远程服务代码,从而更新本地服务代码(将远程同步到本地)。git pull origin gpad_main_master:master
(2)其次在本地服务创建分支(本地与服务器端代码一是同一份代码了),一般创建此分支是基于远程分支(其他开发人员的分支,一般情况是版本管理人员发布的分支,例如:GNBJ-WCDMA-MTK-AN-GPAD-002.00.030-120605AA)作为正式的开发版本,然后切换到当前创建的分支进行开发(处理同步)。checkout,branch,merge...
(3)最后将本地服务代码更新到远程服务(将本地同步到远程)git push origin APP_GPAD_NCR20120601_xiongmc:gpad_main_dev



参考资料:

(1)http://www.open-open.com/lib/view/open1328069733264.html


























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值