分支管理

一个项目通常是由多人的团队协作开发,每个人负责一个模块,各自开发,然后再集成在一起。在开发过程中,如果你想让你的修改和提交不影响整个项目,不影响其他人工作,此时你可以使用Git分支管理:你可以创建一个自己的分支,切换到自己的分支上,然后再这个分支上修改代码、提交修改就可以了。

使用Git分支管理,可以让一个团队的开发工作更加高效和谐:一般项目都会有一个稳定的主分支:master,每个人可以有自己单独的分支,通过这种操作,你的所有的修改都提交到了你自己的分支上,不会影响到master分支上的代码,也不会影响到其他人。

以上次我们的提交为例,在test.c中,原始代码是这样的:

#include <stdio.h>

int main (void)
{
    return 0;
}

假如现在有A和B两个同事,老板给他们分配的工作是:分别实现func_a()和func_b()两个函数,然后在main函数中分别调用它们。为了不影响各自的工作,大家可以分别创建一个分支,然后在自己的分支上干活,以A同事为例:

# git branch branch_a   //创建一个新分支 branch_a
# git checkout branch_a //切换到新分支 branch_a
# gedit test.c
# git commit -m "on branch_a:modify main.c" //将修改提交到 branch_a
# git log                // 查看新的提交信息
# git checkout master    //切换到master分支,在该分支上看不到新的提交信息
# git log

A同事可以先使用git branch去创建一个新的分支branch_a,然后使用git checkout命令将当前工作区从主分支切换到branch_a分支,在这个分支上去修改test.c文件:

#include <stdio.h>

int func_a(void)
{
    return 0;
}

int main (void)
{
    func_a();
    return 0;
}

然后提交到branch_a分支上:

root@ubuntu:/home/test# git add test.c
root@ubuntu:/home/test# git commit -m "branch_a: add func_a to test.c" 
[branch_a a547cfb] branch_a: add func_a to test.c
 1 file changed, 6 insertions(+)

在branch_a分支下,使用git log命令,可以看到当前分支下有2个提交,其中1个是我们刚刚添加的一个提交:

root@ubuntu:/home/test# git branch
* branch_a
  master
root@ubuntu:/home/test# git log
commit a547cfb0181767e9ef79dd37f4fb2ae94d85303d (HEAD -> branch_a)
Author: litao.wang <3284757626@qq.com>
Date:   Wed Sep 23 19:53:59 2020 -0700

    branch_a: add func_a to test.c

commit 62d21534ae082c61dc9e40196d5ff2265b4ca845 (master)
Author: “litao.wang” <3284757626@qq.com>
Date:   Wed Sep 23 18:43:44 2020 -0700

    Init test repo and add test.c to repo

我们再切换到master分支下,再次使用git log命令查看提交信息,你会看到在master分支下,仍旧只有一个提交,你打开test.c文件,仍旧是原来的样子。

root@ubuntu:/home/test# git checkout master
Switched to branch 'master'
root@ubuntu:/home/test# git branch
  branch_a
* master
root@ubuntu:/home/test# git log
commit 62d21534ae082c61dc9e40196d5ff2265b4ca845 (HEAD -> master)
Author: “litao.wang” <3284757626@qq.com>
Date:   Wed Sep 23 18:43:44 2020 -0700

    Init test repo and add test.c to repo

通过实验可以看到,同事A在自己的分支branch_a上干活,并没有影响到master分支上的代码。同样,同事B也可以基于master分支去创建自己的工作分支branch_b,并在自己的分支上修改代码、提交代码。

# git branch branch_b   //创建一个新分支 branch_b
# git checkout branch_b //切换到新分支 branch_b
# gedit test.c
# git commit -m "on branch_b:modify main.c" //将修改提交到 branch_b
# git log                // 查看新的提交信息
《Linux三剑客》视频教程,从零开始快速掌握Linux开发常用的工具:Git、Makefile、vim、autotools、debug,免费赠送C语言视频教程,C语言项目实战:学生成绩管理系统。详情请点击淘宝链接:Linux三剑客