Git分支操作
一、为 Git 指令设置别号
上一节课程中的操作,有些指令的重复度极高,比如 git status 和 git branch -avv 等,Git 能够对这些指令设置别号,以便简化对它们的运用,设置别号的指令是 git config –global alias.[别号] [原指令],假如原指令中有选项,需求加引号。别号是自定义的,能够随意命名,设置后,原指令和别号具有同等效果。操作如下
自己设置的别号要记住,也能够运用 git config -l 指令检查配置文件。下面文档中的指令将运用这些别号。
二、Git分支办理
下面介绍 Git 作为分布式版别控制器最强大的功能:分支办理。
1. git fetch 改写本地分支信息
在介绍分支前,先讲解另一个指令 git fetch,它的效果是将长途库房的分支信息拉取到本地库房,留意,仅仅是更新了本地的长途分支信息,也就是履行 git branch -avv 指令时,检查到的 remotes 开头的行的分支信息。
举例说明一下,首要咱们在 GitHub 页面上对 1.txt 文件进行修正并添加一次提交。
提交完成后,提交数变成 4 个,点下图红色框中的链接能够看到提交记载:
提交记载如下:
在bash中履行 git fetch 指令,然后履行 git branch -avv 检查分支信息:
能够看到,本地分支 main 的版别号无变化,而长途分支现已更新。所以,fetch 指令的效果是改写保存在本地库房的长途分支信息,此指令需求联网。此刻若想使本地 main 分支的提交版别为最新,能够履行 git pull 指令来拉取长途分支到本地,pull 是拉取长途库房的数据到本地,需求联网,而由于前面履行过 git fetch 指令,所以也能够履行 git rebase origin/master 指令来实现 “使本地 main 分支根据长途库房的 main 分支”,rebase 指令在后边还会经常用到,这里只需墨守成规操作即可:
能够看到,长途库房 main 分支、本地库房的 origin/main 分支、本地库房的 main 分支现已一致。
2. 创立新的本地分支
分支在项目开发中效果重大,多人协作时特别不可或缺。例如一个项目上线了 1.0 版别,研发部门需求开发 1.1、1.2 两个测试版,添加不同的新功能,测试版的代码明显不能在正式版地点的分支上,此刻需求新的分支来存放不同版次的代码。再例如试验楼的课程团队在维护课程库房时,每个人都有各自的分支,在自己的分支上进行修正,然后向 main 分支提 PR(pull request),最终从 main 分支推送到线上。
首要,克隆长途库房到本地,进入库房主目录,履行 git br 检查分支信息:
3. 切换分支
此指令创立新分支后并未切换到新分支,仍是在 main 分支上,履行 git checkout [分支名] 切换分支,checkout 也是常用指令,先给它设置别号,然后切换分支:
创立新分支还要手动切换太麻烦,介绍另一个常用的指令 git checkout -b [分支名] 创立分支并切换到新分支:
如上图所示的分支信息,前两行是新建的本地分支信息,它们的版别号与主分支 master 一致,这是由于在哪个分支上创立新分支,新分支的提交记载就与哪个分支一致。新建分支并无盯梢任何长途分支,所以没有 master 分支中的中括号和括号内的蓝色长途分支名。
假定咱们要在当时分支 dev1 上开发一个新的功能,需求添加一个文件 new_func1,然后生成一个新的提交:
4. 将新分支中的提交推送至长途库房
好,新功能现已写好并提交到了版别区,现在要推送了,推送到哪里呢?正常逻辑当然要推送到长途库房的同名分支,不过现在长途库房里只有一个分支:
上图红框中是一个下拉按钮,点击后显现库房中的悉数分支,按钮上显现的是当时地点分支。
履行 git push [主机名] [本地分支名]:[长途分支名] 即可将本地分支推送到长途库房的分支中,通常冒号前后的分支名是相同的,假如是相同的,能够省掉 :[长途分支名],假如长途分支不存在,会主动创立:
上图指令能够简写为 git push origin dev1 。留意哦,这是咱们创立 SSH 相关后第一次履行的 push 指令,可是咱们这次能够看到传输速度有明显的提高,更重要的是,不再需求重复输入用户名和密码了,另外打印信息的第一行是警告信息,由于是这个分支的第一次推送嘛,下次履行推送就不会再呈现了。现在履行 git br 检查一下分支状况,如上。
能够看到,长途分支 origin/dev1 的信息现已在本地存在,且与本地同名分支一致。再看下 GitHub 页面的状况:
很好,与预期毫无二致。
5. 本地分支盯梢长途分支
现在有个问题,当咱们再次在 dev1 分支上修正并提交,推送到长途库房时仍是要输入上面的那个长长的指令,好不便利。假如能和 main 分支一样盯梢长途同名分支,就能够直接运用 git push 指令推送了。有办法的,履行这个指令 git branch -u [主机名/长途分支名] [本地分支名] 将本地分支与长途分支相关,或者说使本地分支盯梢长途分支。假如是设置当时地点分支盯梢长途分支,最终一个参数本地分支名能够省掉不写:
这个指令的 -u 选项是 –set-upstream 的缩写。可不能够让本地分支盯梢长途非同名分支呢?能够的,虽然几乎遇不到这种自找麻烦的需求。可不能够吊销本地分支对长途分支的盯梢呢?也是能够的,履行 git branch –unset-upstream [分支名] 即可吊销该分支对长途分支的盯梢,同样地,假如吊销当时地点的分支的盯梢,分支名能够省掉不写:
问题又来了,前面的操作是先将本地分支推送到长途库房,使长途库房创立新分支,然后再履行指令使本地分支盯梢长途分支,有没有办法在推送时就主动盯梢长途分支呢?有的,在推送的时分,加个 –set-upstream 或其简写 -u 选项即可,现在切换到 dev 分支试一下这个指令:
6. 删去长途分支
接下来,介绍一下删去分支的办法。
首要,删去长途分支,运用 git push [主机名] :[长途分支名] ,假如一次性删去多个,能够这样:git push [主机名] :[长途分支名] :[长途分支名] :[长途分支名] 。此指令的原理是将空分支推送到长途分支,成果自然就是长途分支被删去。另一个删去长途分支的指令:git push [主机名] –delete [长途分支名]。删去长途分支的指令能够在任意本地分支中履行。两个指令分别试一下:
能够看到本地库房现已没有长途分支 dev 和 dev1 的分支信息。检查 GitHub 库房页面:
也只剩 main 一个分支。操作成功。
7. 本地分支的更名与删去
运用 git branch -D [分支名] 删去本地分支,同样地,此指令也能够一次删去多个,将需求删去的分支名罗列在指令后边即可。在此之前,先介绍一个极少用到的指令:给本地分支改名 git branch -m [原分支名] [新分支名] ,若修正当时地点分支的名字,原分支名能够省掉不写:
好,现在要一次性删去本地分支 ved 和 dev1。需求留意的一点:当时地点的分支不能被删去。切换到 main 分支,然后履行 git branch -D ved dev1 指令:
履行 git branch -avv 检查当时库房分支状况:
很好,全部都回到了课程开始时的样子,就像什么都没有发生。本节课程就到这里。
三、总结
本节试验主要讲解了以下知识点:
- 为 Git 指令设置别号
- git fetch 改写本地分支信息
- 创立新的本地分支
- 将新分支中的提交推送至长途库房
- 本地分支盯梢长途分支
- 删去长途分支
- 本地分支的更名与删去
期望大家通过本节课程的学习,真实把握创立分支、相关长途分支、吊销相关、删去分支等必备技能。下节课程咱们将学习多人协作中的 Git & GitHub 操作流程。