您的位置:首页 > 其它

Git分支操作(Git branch)

u010205879 2015-06-21 10:16 85 查看


前言

标题已经透露了本篇博文的目标:熟悉GIT的基本分支操作。

假定你已经熟悉GIT的基本操作,如克隆仓库,提交代码等等。

你也需要了解GIT的基本概念,例如GIT的branch,commit等。

如果你还不熟悉这些,请移步https://git-scm.com/


正文


创建分支


从develop创建一个分支

切换到develop

 

$
git checkout develop


更新develop

$
git pull origin develop


 

创建分支

 

$
git checkout -b hfd_project_A_local


 

此时我们就拥有了一个名为hfd_project_A_local的分支。它和develop分支是一模一样的,名字除外。


将分支提交到远程仓库

$
git push origin <本地分支名>:<远程分支名>


$
git push origin hfd_project_A_local:hfd_project_A


此时,你在origin指向的远程仓库创建了hfd_project_A,它是hfd_project_A_local的拷贝。


获取远程分支

有时你需要在他人已经创建好的分支上进行开发,此时你就要用到这个技能了。

$
git fetch origin <远程分支名>:<本地分支名>


$
git fetch origin hfd_project_A:hfd_project_A_local


此时,你本地拥有了hfd_project_A_local,它是远程分支hfd_project_A的拷贝。


更新分支

在团队合作时,你和同事都不断将自己的代码提交到远程仓库,为了将远程的代码同步到本地,你可以:

$
git checkout hfd_project_A_local


$
git pull origin <远程分支名>


$
git pull origin hfd_project_A


 

如果一切顺利的话,远程的代码就已经合并到你的本地分支了。


合并分支

在并行开发等情况下,你可能需要将一个分支合并到另一个分支

 

$
git checkout hfd_project_B


$
git pull origin hfd_project_B


$
git checkout hfd_project_A


$
git pull origin hfd_project_A


$
git merge hfd_project_B


 

一切顺利,此时hfd_project_B成功合并到了hfd_project_A


解决冲突

在更新分支、合并分支时,如果遇到阻碍,那往往是因为遇到了冲突,这意味着GIT不能自动合并两个文件了。

如此,我们只能手动解决冲突。

$
git merge hfd_project_B


Auto-merging
app-trade-hfb
/lib/dao/hfd/kernel/orderdetail
.php


CONFLICT
(content): Merge conflict 
in
 
app-trade-hfb
/lib/dao/hfd/kernel/orderdetail
.php


Automatic
merge failed; fix conflicts and 
then
 
commit
the result.


上面的提示告诉我们,在合并app-trade-hfb/lib/dao/hfd/kernel/orderdetail.php时遇到了冲突。

 

$
git status


 
#
On branch hfd_project_A


#
Unmerged paths:


#  
(use "git add/rm <file>..." as appropriate to mark resolution)


#


#
both modified:      app-trade-hfb/lib/dao/hfd/kernel/orderdetail.php


 

打开遇到冲突的文件,找到类似如下的内容

 

<<<<<<<
HEAD


        
$oORM->addFilter(
'iStatus'
'='
,
1);


=======


        
$oORM->addFilter(
'iStatus'
'='
,
0);


>>>>>>>
hfd_project_B


 

经过确认,我们确定了应该保留哪一行,上面的内容改为

 

$oORM->addFilter(
'iStatus'
'='
,
1);


 

告诉GIT我们已经解决冲突了

 

$
git add app-trade-hfb
/lib/dao/hfd/kernel/orderdetail
.php


 

 

$
git status


#
On branch hfd_project_A


#
Changes to be committed:


#


#
modified:   app-trade-hfb/lib/dao/hfd/kernel/orderdetail.php


#


 

Nice,可以提交代码了。


合并develop

这往往发生在QA同事已经测试完毕,恭喜你,你的分支通过测试了。

然后,你就可以按照“合并分支”部分的描述,将你的开发分支合并到develop。

别忘记提交到远程仓库哦
标签: