Git在协同开发中的使用经验分享

最近用Git用的比较多,有些心得希望可以和大家分享。
我们的android代码是放在git@osc上面的,原来是在GitBucket上面的,不过由于等诸多不便就迁移回来了。

  • 以下主要涉及到两个远程库,一个是放置最终代码的 Company/AndroidApp.git,上面只有master分支。以及我从这个远程库fork的一份存在于我自己代码空间中的cjw19911225/AndroidApp.git,这里有两个分支ILB_B_DEV_Javingmaster(个人习惯,不在master上面直接开发)。我希望每一次本地开发完之后,可以和Company/AndroidApp.git上面的master分支进行合并,然后提交到cjw19911225/AndroidApp.git上面的ILB_B_DEV_Javing,然后再申请pull request 请求合并到 Company/AndroidApp.git 上面的master。
  • 首先克隆cjw19911225/AndroidApp.git到本地仓库,建立相应的跟踪关系:
git clone https://git.oschina.net/cjw19911225/AndroidApp.git
git checkout -t ILB_B_DEV_Javing 
//这里也可以用 --track 或者-b 来做,殊途同归
  • 然后为了方便我在本地的仓库中,也可以对最终代码库进行访问,不妨为Company/AndroidApp.git起一个别名。


git remote add cjw_upstreaming https://git.oschina.net/Company/AndroidApp.git

  • 通过 git remote -v 可以查看远程库,现在我这里有两个,一个是 origin (我克隆的),另一个就是cjw_upstreaming。
  • 接下来操作就很简单了,每一次更新了本地代码,只需要

 
git fetch cjw_upstreaming master
git merge cjw_upstreaming/master //我需要获取company远程库中的最新代码,
因为可能我同事也提交了代码,然后与我本地分支进行合并

把最终代码库的最新代码合并到本地,处理好conflict 。然后就可以:

 
git status //查看本地代码库的状态
git add -A //添加所有改动到缓存区
git commit -m “infomation about commit” //提交改动到本地分支
git push //推送到远程分支,跟踪关系可以通过 git config -l|grep “要查找的字符串”来查看

  • 最后,我在我远程的cjw19911225/AndroidApp.git 里面申请 pull request ,请求ILB_B_DEV_Javing 合并到 Company.git 上面的 master 就ok了!

:conflict 的产生原因在于,版本A1相对于版本A坐了改动,版本A2也相对于版本A做了改动,那么当我们将版本A2合并到版本A1的时候,git会“机智”的提示我们选择哪个版本的代码改动,与其说是conflict,不如叫做differences 。切记一点,第一次修改conflict尤为重要,如果第一次没修改好久提交了,这是git默认就记住了你的选择与改动,下一次再合并代码的时候,就不会提示之前的conflict了。

你可能感兴趣的:(git)