转载请标明出处:http://blog.csdn.net/nicnac/article/details/7822011
首先,要说git比我想象的功能强大的多,也不可避免的复杂的多。所以我不想花大量的时间去刻意学习它,在实践中用哪查哪是我非常中意的方法。
我们现在在进行android项目的开发。由于速度代码之庞大,编译过程之繁复,所以必须多人在高性能linux服务器上进行编译和版本控制。由于多人编程,版本控制不可避免。
具体情况是这样:
1.一台8核200GB的CentOS服务器,足够了。
2.每个人在/home下简历自己的用户目录,并从/data下的一个repo,clone下来一个git节点,完全克隆哦,就是完全复制了一个一摸一样的版本,几个branch、版本历史、神马神 马都是一样一样的。
命令:git clone[email protected]:/data/git/git1106.git(your android dir)
cd(your android dir)
git checkout -b fina origin/fina (fina是保存着最新稳定版本的分支)
必须说明,我们所克隆的这个节点保存着我们多人合作后所提交的最新稳定版本的代码。
3.每个人在自己目录下修改代码后要提交给git(注意不是提交给那个最新稳定版本),是为了提交给git进行版本控制与记录的。
命令:git branch hook
git checkout hook
git add -A
git commit -am "添加话柄摘放处理并上报至应用层(CallNotifier.java)"
git log
commit 08cb4ea3f0dfa503146598f55801c329fac8bafe
Author: zhangyixiang <[email protected]>
Date: Wed Aug 1 17:12:11 2012 +0800
添加话柄摘放处理并上报至应用层(CallNotifier.java)
commit 336f0c44fe68581779dab8124b54e5db0d088a12
Author: zhouniandong <[email protected]>
Date: Wed Jun 20 13:14:45 2012 +0800
修改了设备ID,改为SEUIC-M600
如果调试某一个功能模块时,是和别人一起合作进行的,那么就要在提交给最新稳定版本前与同伴merge一下。这里可有的说了,由于我没有git操作经验,所以又新建了一个branch,用来试验,成了就成了,不成就删掉,反正教程上说,新建并管理分支的成本几乎可以忽略。所以我新建了一个分支叫hook(原来所在分支为RIL),并转到该分支。执行完以上两条命令后,并转会分支RIL,发现工作目录发生变化,本来之前添加的几个文件,都不见了!这是因为我们已经把他们add+commit给我分支hook,此时工作目录已经和stage完全同步! 认识到这点很重要,一旦把新的工作提交,工作目录中所呈现的文件和git记录的(即为stage状态的文件)是同步的,随着分支、版本的切换,工作目录中的文件会发生变化,很神奇吧!
还有,如果想在RIL分支中把刚才做的修改也进行提交,git会提示“nothing to commit (working directory clean)”,这是因为新的修改已经完全被提交到hook,RIL则作为老分支存在着,她的存在就是为了保存之前的代码。所以,任何一次修改,只能够提交到一个branch,每个branch保存着不同的版本发展历程。即便是父子分支,从子分支的startpoint开始之后,父分支就开始与子分支开始完全不同的路了,此一别,永不相逢。
4.同伴同样从最新稳定版本中clone了git工作目录,并做了一些修改,接下来他要合并我刚才的最新修改才可以进行进一步的工作。怎么做呢?就是将我的代码合并到她的上面。
命令:git branch hook1
git checkout hook1(她的老分支也是RIL)
git add -A
git commit -am "完善Dail,InCallScreen界面,并添加通话设置"
git log
commit 7a878f3a7a259367c577eebe492c3456e70ed9fe
Author: luyuhong <[email protected]>
Date: Wed Aug 1 18:18:43 2012 +0800
完善Dail,InCallScreen界面,并添加通话设置
commit 336f0c44fe68581779dab8124b54e5db0d088a12
Author: zhouniandong <[email protected]>
Date: Wed Jun 20 13:14:45 2012 +0800
修改了设备ID,改为SEUIC-M600
git pull /home/zhangyixiang/git0702/git1106 (这就是关键的