git快速入门(3)__ 分支创建、切换和合并

分手后的思念是犯贱 2024-05-31 05:29 203阅读 0赞

1.理解分支

为了便于理解,大家可以粗略的将分支认为就是一个代码的副本。

如果我们同时在一个代码上开发多个功能。还要修改一些bug,团队成员协作过程中,必然会出现相互影响。

假如某个同事提交了一个错误的代码,可能会导致其他更新了代码的同事都无法正常编译。互相影响。

一个比较好的做法是,我们开发一个新的功能,或者修改一个bug时,我们可以拉出一个分支。在这个分支上的操作不会影响其他同事的工作,待你的工作完成后,你可以将代码再合并回最新代码中。

2fe1365fee568bfab22453e2c1b0094b.png

2. 常见分支master 、develop、release、hotfix、feature的用处

1)主分支master 对外发布版本的分支

当我们最初向git提交时,会自动产生一个master分支

主分支一般保存对外发布的版本。

2)develop分支 开发分支

为了保持主分支上代码的稳定(主分支通常保存向用户发布的版本),开发工作不在主分支上进行,而是在develop分支上进行。

当develop完成开发任务后,黑冰到master分支

3)feature分支

所有的团队成员在develop上工作,为了保持开发分支的稳定性,每个功能开发时都应拉出一个分支,是基于develop分支,当开发到完成后合并到develop

在开发过程中,当要开发某个功能时,会拉出一个功能分支

4)hotfix分支

当修改bug时,也可以从开发分支(develop)上拉出分支,在分支上修改,完成后,再讲代码合并到开发分支(develop)

e17711035d4ceae42bb67b572cf83a40.png

3.git分支命令

git branch -v 查看分支

git branch 分支名 创建分支

git checkout 分支名 切换分支

git checkout -b 分支名 创建并切换到分支(等价于 git branch 分支名+git checkout 分支名)

git merge 分支名 将指定的分支合并到当前分支

git branch -d 分支名 删除指定名称的分支(分支被合并后才允许删除,如果要删除,需要使用-D 强制删除)

4. git分支实操

1) 准备工作

为了方便进行后续的代码合并以及冲突的测试,请大家克隆你的码云上的最新的cmo_week04 到本地文件夹“week502”。

  1. 请大家使用自己的gitee账号登录gitee.com

  2. fork 仓库cmo_week04: 软件配置管理 第四周课程练习仓库 到你的gitee上

  3. 本地计算机上创建一个文件夹week502

  4. 在week502de父目录中打开git命令窗口

  5. 执行 git clone ,记得把中间的地址改为你的仓库地址奥

git clone cmo_week04: 软件配置管理 第四周课程练习仓库 week502/

a8b5e25edb1516a192ee38254c736b83.png

2) git branch 查看分支

进入到刚才创建的week502目录,右键点击 git Bash here.. 打开git命令窗口,

输入:git branch -v

ac5864fbcda645230491831962213861.png

这个命令练习起来,后面我们要反复使用该命令奥!

3)git branch 分支名 创建分支

3b4900fdfe9743ba8fbdbda9c149d4c0.png

下面我们的实验先创建develop分支,然后再develop上再依次创建2个分支:feature_add分支 和feature_ sub 分支,分别用来开发add功能和sub功能。

git branch develop 创建develop分支

git checkout develop 切换到develop分支

git branch feature_add 创建一个名为add的分支,注意,此时仍在原来的分支上

git branch feature_sub 创建另一个名为sub的分支,用来开发 sub 功能

git branch 查看分支情况

1c068b27f5a14dd5a832b182fd519bd6.png

4)git checkout 分支名 切换分支

上一步我们已经创建了分支。

在这一步,我们要模拟两位开发切换到他们的分支,提交代码到各自的分支上。

首先模拟开发1切换到分支feature_add上提交代码,并提交到本地仓库

  1. 下面我们切换到feature_add分支上,并添加一个 add.txt 的文件,

  2. feature_add分支上,并在001.txt的文件的第六行之后删除掉,末尾添加add函数

int add(int x , int y)

{

return x+y;

}

  1. 提交到本地版本库,日志为:xxx :分支 feature_add 上 001.txt新增了add函数 xxx为你的姓名

b903b60befeac9acd8994c25c771ed2b.png

然后模拟开发2切换到分支feature_sub上提交代码,并提交到本地仓库

  1. 下面我们切换到feature_sub分支上,修改001.txt,将5行之后的内容删除,加上sub函数

int sub(int x , int y)

{

return x-y;

}

  1. .提交分支 feature_sub 上修改,日志为:xxx 分支git branch feature_sub 上修改 新增了sub函数 xxx为学生姓名

23c050f0ff6d218dd219ee01f28d6221.png

需要注意的是,当前分支如果有未提交到暂存区的修改,切换分支会有错误提醒,提示你提交修改或者保存文件

7e0146ee1880d48e0e67fdc85fae021c.png

我们此时,你可以将修改commit到本地仓库,

如果你觉得还没有修改好,那你也可以使用git stash 将其隐藏,以后再切换回分支时,再将其恢复

6953bb295ab769ff68917df41d0d92f9.png

5)git merge 分支名 合并分支

合并分支时,需要先切换到目标分支,然后再合并。

为了减少后期冲突,合并前,建议git pull 从服务器上拉取最新代码。

(1) 将分支 git branch feature_add 合并到主干

我们切换到develop分支上,将feature_add 分支合并到develop

77f3cded719f002b09c1bd874c271f89.png

8a0e1fda3c7b12533ac59cdf17c3cddc.png

(2)将分支git branch feature_sub 也合并到主干

我们切换到develop分支上,将feature_add 分支合并到develop

合并过程中,由于feature_add 和feature_sub分支修改了相同行,提交时会提示冲突,需要手动解决冲突。

ead704756c08edbc7561628ce833483b.png

如果你安装了 TortoiseGit。则可以通过图形化工具来解决冲突,如果没有,直接查看001.txt也可以

737af131ba89aa849ff699fd24bd60a3.png

b8f82b112ce058723cf2c9fbb66d4524.png

手动解决冲突后,再次 添加到暂存区后,提交到本地库

f12e3ca86eac52eebd3aaaedd910ae34.png

6)将develop、feature_add feature_sub分支提交到远程仓库

如果愿意,大家也可以将分支推送到远程分支

git push <远程主机名><本地分支名>

git push <远程主机名><本地分支名>:<远程分支名>

如果不指定远程分支名,默认同本地分支名

d6a3ad65d69b6ec362224e6b36cf5051.png

6bd2a518ad7975bd4cfe47194ace75c2.png

6)git branch -d 分支名 删除分支

删除分支前,需要切换到其他分支

6d01fa8a3159b39d8f6ff70d03ddb7f1.png

7)查看日志,截屏

git log**—oneline—graph—decorate**—all 是常用的日志查看命令

git log 命令用于显示仓库的历史记录,

—oneline参数会让每一个提交显示在一行上,

—graph 参数会显示提交的分支和合并信息,

—decorate 参数会显示分支,tags信息,

—all 参数会显示所有的commit记录

截屏日志结果

dac65d804446587b3790ff0987d265c2.png

5.gitee仓库的删除

85261507b399f2ae0277aedc756b26d8.png

在确认窗口中,输入确认信息后,点击【确认删除】,则可以成功删除仓库

8c1f8d3e787debb88ad93b7f0da3c2a2.png

在验证码确认窗口上输入账户密码后,点击【验证】

d2ebe507bcbbf1cf77f3cc5d8b8da070.png

6.git 冲突解决

git pull —allow-unrelated-histories

74d8c1e7dd3d590c03963e6fac4bd03c.png

发表评论

表情:
评论列表 (有 0 条评论,203人围观)

还没有评论,来说两句吧...

相关阅读

    相关 IDEA创建git分支切换分支

    在实际项目的开发中,经常会有新的需求,针对新需求的开发,不能在原来的主分支上进行开发,因为这样会对原来的代码造成影响。下面展示一下如何在IDEA上来创建git分支,和如何切换分

    相关 git 分支切换合并

    此处,省去创建本地分支与远程分支的过程。(假设我们已经掌握了创建分支的方法) 首先,来讲解下git是如何实现本地分支的切换的?其实很简单,假设远程仓库有两个分支,分别为mas