Git学习笔记(6)----分支

本文介绍了Git分支的概念,强调了其在软件开发中的重要性,如影分身般帮助开发者在不影响主线的情况下处理紧急任务。通过查看、创建、切换、合并和删除分支的操作流程,阐述了如何有效地使用Git分支,特别指出合并分支时可能出现的冲突及解决方法。

        分支是什么?

        个人觉得用“分身”这个词来形容这个功能更佳,具体作用的话,大概就是鸣人用影分身来提升实力的作用吧。什么?你没看过火影?那好吧,来一个正经的解释:以coding 为例,当你正在开发一个新功能时,突然发现有一个线上的bug需要紧急修复,但是新功能还没有完成,肯定不能上,那么这个时候,可以以目前线上代码为源版本,创建一个分支,将bug修复、测试通过后提交到线上版本,你会发现:bug修复了,而且也没有因为新功能的开发影响到线上代码,这就是分支的作用。

        如果没有用分支,上面的情况应该怎么处理呢?首先,把开发到一半的新功能全部还原,然后修复bug、测试,发布到线上。很明显,要么不还原正在开发的功能,影响线上代码(这绝对是不允许的,所以只能还原开发中的代码),要么还原正在开发的代码,无论怎样,都会影响整个工作进度。这样一对比,就更容易理解分支的作用了吧。

        Git的分支好在哪?

        几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。

        有人把 Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来。Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快。和许多其他版本控制系统不同,Git 鼓励在工作流程中频繁使用分支与合并,哪怕一天之内进行许多次都没有关系。理解分支的概念并熟练运用后,你才会意识到为什么 Git 是一个如此强大而独特的工具,并从此真正改变你的开发方式。

       分支怎么用?

        按照使用流程,大致有查看分支、创建分支、合并分支、删除分支等几大功能,按照此顺序,我们一个一个来学习一下。

        查看分支

        通过命令“git branch [-a|-r]”,这个上一篇介绍过,默认查询本地分支,-a 表示查询所有分支,-r 表示查询远程分支

        创建分支、切换分支

        到目前为止,我们所有的操作,都是在一个分支中完成的,当你git init 的时候,就自动创建了一个叫master的分支,即主分支,一般来说,为了不影响主分支,我们会创建一些其它的分支如:开发分支,bug修复分支,优化分支等,当这些分支完成各自的工作后,再合并到master中,让master分支永远保持正常无误的状态。

        创建分支一般有以下操作,根据情况自行选择使用:

        git branch [branch-name]:创建一个新的分支(基于当前分支),但依旧停留在当前分支,不会切换到新的分支,想要切换分支,需要再次使用命令“git checkout [branch-name]”切换分支,下图是我演示的一个创建分支--查看分支--切换分支--查看分支的流程,请注意看区别:


        比较细心的读者,应该在前几篇文章的截图中就注意到了,项目目录后有个蓝色的括号(master),这个其实就是表示当前分支名称,通过语句查看分支的话,在当前所在分支前会有*号标注,且分支名字有绿色标注,在演示中我用的是win7系统装的官方的Git,其他的系统显示可能不太相同,但意思都一样。

        需要说明的一点,使用一些界面工具或其他工具时,你会看到一个“HEAD”标记,表示当前分支的意思(其实就是上图的*和绿色,不知道官方的这个命令行界面为啥不显示HEAD..),后面介绍界面工具的时候会演示出来。

        git checkout -b [branch]:此命令表示,创建一个新分支,并且切换到新分支中,其实就是“git branch”+“git checkout”操作,如图所示:


        合并分支

        上面说到,分支的工作完成后,一般会合并到master分支(当然合并到别的分支也可以),通过命令“git merge [branch] ”,将某一个分支,合并到当前分支(注意是合并到当前分支,即HEAD指向的分支)。


        如图所示,我当前所在分支为dev分支,通过命令“git merge testBranch” 将testBranch分支所做的工作,合并到dev分支下。

        注意:合并分支可能会出现冲突,有些git可以自动解决,有些需要手动解决(比如修改了同一个地方),在远程仓库篇简单的提了一下合并冲突,那么遇到这种冲突,我们怎么取解决呢?我在dev分支和testBranch中的test.txt文件中分别在第二行添加内容,然后将testBranch分支合并至dev分支,结果如图所示:


        提示有冲突需要手动解决,此时打开test.txt文档,内容为(2-6行为冲突):


        其中<<<<<<< HEAD 至 =======之间表示当前分支(dev)库中的内容,=======至>>>>>>>testBranch之间表示是合并过来的testBranch分支的内容,此时需要手动将此部分冲突的内容解决,如将2-6行改为如图所示:


        手动解决冲突内容后,再次提交该文件即可。当然了,你也可以不解决冲突,直接提交文件,但后果自负。偷笑

        tip:通过命令行提交文件时,不会有提示(即使有冲突),直接提交,在使用一些界面工具时,会提示那些文件有冲突需要解决。

        删除分支

        当你的分支完成它的任务,合并到相应的分支后,再继续留着它也没什么意义了,那么就删除它吧,反正git的分支创建、切换那么快,需要的时候再创建一个就好喽,这点儿确实要比其他的版本控制系统要好太多了。通过命令“git branch -d [branch-name]”将本地分支删除,如图所示:


        如果想删除远程仓库中的分支,可以通过命令“git push origin --delete [branch-name]”或“git branch -dr [remote/branch]”。

        注意:尽量不要擅自删除远程仓库的内容,除非它只为你一个人服务。

        对于分支的基本操作命令,就介绍到这里,对于分支的使用,可不仅仅是这几个命令这么简单。有兴趣的话,可以去了解一下分支策略,后续我也会分享一篇简单的分支策略,来和大家一起学习。

<think>好的,用户想要寻找关于Git的学习资料,特别是搭建相关的教程或指南。首先,我需要回顾用户提供的引用内容。 引用[1]提到了Git教程,推荐了Gitee和GitLab,适合国内用户使用,因为GitHub可能有访问速度问题。用户可能需要基础教程和替代平台的信息。引用[2]详细说明了如何在本地搭建Git服务器,包括初始化仓库和客户端上传步骤。用户对搭建自己的Git服务器感兴趣,比如公司内部使用GitLab的情况。 接下来,我需要整理这些信息,分步骤回答。首先,推荐基础学习资料,包括官方文档和中文教程。然后,介绍搭建私有仓库的教程,包括GitLab和Gitea。用户可能还需要了解自建服务器的步骤,比如使用git init --bare创建裸仓库,以及客户端如何连接。此外,可能还需要推荐书籍和视频教程,帮助用户深入学习。 用户的问题可能还涉及如何选择适合自己团队的解决方案,比如GitLab适合企业,而Gitea适合轻量级需求。需要解释不同工具的优缺点。另外,基础操作和进阶资源也需要覆盖,确保用户从入门到进阶都有资料参考。 检查是否有遗漏点,比如权限管理、分支策略等高级主题,是否需要提及?根据引用内容,用户主要关注搭建教程,但可能也需要一些进阶资源。因此,在推荐资料时,应包括基础和进阶内容,满足不同层次的需求。 最后,生成相关问题,帮助用户深入探索Git的搭建和使用。例如,如何选择自建Git服务,或者Git仓库的权限管理方法。这些问题能引导用户进一步学习,解决实际操作中可能遇到的问题。</think>以下是关于Git学习资料及搭建教程的整理和推荐,结合引用内容和实际需求: --- ### 一、Git基础学习资料 1. **官方文档** Git官方提供完整的英文文档,涵盖所有基础命令和原理:[Git Book](https://git-scm.com/book/en/v2) *适合系统性学习,但需要一定英语基础。* 2. **中文快速入门教程** - 廖雪峰Git教程:[Git教程](https://www.liaoxuefeng.com/wiki/896043488029600) *从安装到分支管理,内容通俗易懂,适合新手。* - 菜鸟教程Git篇:[Git简明指南](https://www.runoob.com/git/git-tutorial.html) *提供命令速查和基础操作演示。* --- ### 二、Git私有仓库搭建教程 #### 1. **自建Git服务器** - **引用[2]的方法**: 在服务器上执行 `sudo git init --bare sample.git` 创建裸仓库,客户端通过SSH或HTTP协议连接上传代码[^2]。 *适用于小型团队或个人项目,无需复杂配置。* - **详细步骤**: ```bash # 服务器端 mkdir /opt/git && cd /opt/git sudo git init --bare myproject.git chown -R git:git myproject.git # 设置权限 # 客户端 git remote add origin user@server:/opt/git/myproject.git git push origin master ``` #### 2. **企业级解决方案** - **GitLab搭建** - 官方文档:[GitLab Omnibus安装指南](https://docs.gitlab.com/ee/install/) *提供Docker、Linux等多种安装方式,适合企业级代码管理。* - 国内优化方案: *替换Gem源为阿里云镜像以加速安装,解决依赖问题。* - **轻量级替代:Gitea** - 官网教程:[Gitea快速部署](https://docs.gitea.io/en-us/) *单二进制文件部署,资源占用低,适合中小团队[^1]。* #### 3. **国内代码托管平台** - **Gitee(码云)** - 官方教程:[Gitee帮助中心](https://gitee.com/help) *提供Git基础操作、仓库管理及CI/CD集成,访问速度快。* --- ### 三、进阶学习资源 1. **分支策略与协作** - 《Pro Git》第5章:[分布式Git工作流](https://git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows) *深入讲解Git Flow、GitHub Flow等协作模型。* 2. **权限管理** - GitLab权限配置:[Project Members权限说明](https://docs.gitlab.com/ee/user/permissions.html) *细化开发者、维护者角色权限,保障代码安全。* 3. **书籍推荐** -Git权威指南》:全面覆盖Git底层原理和高级技巧。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值