Github 之 分支 branch 操作之 查看分支/创建分支/切换分支/提交分支/删除分支/合并分支 等操作
一、简单介绍
二、查看分支
1、查看本地所有分支:git branch
2、查看远程有哪些分支:git branch -r
3、查看所有分支(本地和远程的):git branch -a
三、创建分支
1、只创建分支(不切换分支):git branch [branch name]
2、创建并切换分支:git chechout -b [branch name]
四、切换分支
1、切换本地分支:git chechout [branch name]
五、提交分支
1、提交分支到远程:git push origin [branch name]
六、删除分支
1、删除本地分支:git branch -d [branch name]
2、删除远程分支:git push origin :[branch name]
七、合并分支
1、(必要的话)先把分支的修改提交到远程服务器
2、然后再切换到master分支上
3、把远程master上的代码 pull 下来((多人开发)同步下修改,避免可能的代码冲突)
4、把分支的代码合并到 master上
5、简单查看下合并状态是否修改是否一致,把代码推到远程 master
八、拉取分支
一、简单介绍Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
本节介绍,Git 对 分支 branch 管理的一些相关操作。
1、查看分支,这三个指令相信自己没有理由不会
(1)查看本地所有分支:git branch
(2)查看远程有哪些分支:git branch -r
(3)查看所有分支(本地和远程的):git branch -a
(4)查看本地(或者远端)分支及追踪的分支:git branch -vv
看到这里,可能有人就有疑问了,那个remotes/origin/HEAD -> origin/master是什么?
答疑:
origin/HEAD就像一个指针,表示默认分支,你的remotes/origin/HEAD ->
origin/master表示它指向origin/master,即origin/master是默认分支。
具体HEAD、origin是什么参看我前面的系列文章。有人此时会有疑问,删掉remotes/origin/HEAD -> origin/master可不可以?
答案是当然是可以的:
删除指令:git remote set-head origin -d
使用git branch -vv组合-r、-a指令操作图示
疑问: 图示中的efcd4a2是什么
答疑:它是commit ID值,每次我们往本地库提交一次代码时,git都会给我们自动生成一串字符,这个字符就是每次commit的SHA1值,可以根据 git log 看到。
git截取每次commit的SHA1值的前6位字符构成commit ID的值,主要用于记录每一次提交的信息,这个commit ID值很重要,当我们代码提交错误想回滚代码时(或者说想查看历史某次提交的记录时),此时就可以根据commit ID值寻找了,具体commit ID用法查看后续的git系列文章。
2、创建分支,这三个指令也很重要哦
(1)只创建分支(不切换分支):git branch [branch name]
(2)创建并切换分支:git checkout -b [branch name]
(3)拉取远程分支到本地创建,并且二者关联在一起:git checkout -b 本地分支名 origin/远程分支名
git branch指令操作图示
疑问:如何将刚创建好的本地分支推送到远端呢
答疑:提交分支,具体如何提交分支详细请看后续
git checkout -b [branch name]指令操作图示
(注意:* 号为当前所在分支)
git checkout -b 本地分支名 origin/远程分支名 指令操作图示
疑问:有人会提出,该组合指令中因为有-b的缘故所以才在最后切换到新创建的分支,这点儿说的的确不错,如果去除-b执行git checkout
本地分支名 origin/远程分支名 指令可以嘛 答疑:答案是不可以的,具体答案看图示
3、切换分支
(1)切换本地分支:git checkout [branch name]
git checkout [branch name] 指令操作图示
疑问:切换到远程分支可以嘛
答疑:不可以,具体看图示
解析:(1) HEAD类似于链表的头指针,也可以理解为栈顶指针,是指向你本地branch的最新记录,需要自己去理解。
(2)、没有切到test是因为你的命令不正确,并不是切到test的命令。
从brach可知,你本地已经有了test,如果要切到test,命令应该是:git checkout test。 而git checkout origin/test意思是将本地git的头指针指向origin库的test分支,而origin不是你本地的,只能指向它的id,并不能切过去。
4、修改分支
git支持修改分支的名称,可以修改本地分支名,也可以修改远程分支名。
当修改本地分支(远端没有该分支)
(1)执行 git branch -m <old_branch> <new_branch> 指令即可
(2)当修改远端分支
具体修改的操作步骤分为三步。
第一步:修改本地分支
git branch -m <old_branch> <new_branch>
第二步:删除远程分支
git push origin :<old_branch>
第三步:切换到本地新分支,将本地新分支推到远程
git checkout <new_branch>
git push --set-upstream origin <new_branch>
知识角落:
-m --move:表示移动或重命名,这里使用-M则表示强制重命名。
5、删除分支
(1)删除本地分支:git branch -d [branch name]
注意:1、不能删除当前正所处的分支;2、不能删除不存在的分支;
(2)删除远程分支:git push origin :[branch name]
或者 git push origin --delete [branchname]
注意:假设要删除[branchname]的远程分支,我们需要先把分支切换到其他分支,因为所在的当前分支[branchname]下,是不能删除它的。
git branch -d [branch name] 指令操作图示
可以使用git branch -d [branch name]… 指令同时删除多个分支
git push origin :[branch name] 指令操作图示
git push origin --delete [branchname] 指令操作图示
注意:
6、拉取分支
我们在远端创建一个分支zss,然后如何将它拉取到本地呢?看接下来的操作
总共三种方法从远程仓库拉取指定的某一个分支
(1)git clone -b 本地新分支名称 xxx.git(重要)
注意:用git clone -b <分支名称> 拉取指定的某一个分支时,我们本地是没有克隆url对应的远程仓库代码,也就是说进入某个路径的文件夹后直接使用该命令去拉取指定分支,而不是先执行git clone 将远程代码库克隆到本地以后进入项目目录再执行该命令去拉取指定分支。否则,拉取下来的还是master主分支。
即:使用git clone的时候必须在一个空文件夹里(或者文件夹里没有克隆过该项目)才能使用
(2)git fetch 命令获取(重要)
git fetch命令从远程仓库拉取指定某一个分支时,和上面的git clone -b命令时不一样。使用git fetch命令时,需要先将远程的仓库克隆到本地,然后在执行git fetch命令。该命令执行完以后还是处在master主分支的,如果进去目录没有发现想要拉取的仓库文件。此时并不是git fetch命令没有执行,而是我们还没有切换到我们想要拉取的分支上,需要我们执行git checkout命令切换到我们想要拉取的分支上。
注意:使用该命令时,在本地需要切换到拉取的远端分支后,才能通过git branch指令查看到
(3)git checkout -b xxx 命令获取(了解)
第三种获取远程仓库某一个指定分支的方法和第二种方法有点类似,都是将远程仓库克隆到本地仓库,然后执行git checkout -b <本地分支名称> origin/<远程分支名称>
git clone -b 本地新分支名称 xxx.git 指令操作图示
git fetch 指令操作图示
git checkout -b xxx 指令操作图示
7、提交分支
git push -u origin [branch name]
8、合并分支