Git使用手册/Git教程:git branch 分支操作、创建分支、查看分支、删除分支、删除本地分支、删除远程分支

相关文章:
关于验证是否存在ssh配置以及生成SSH Key的方法可以参照文章:Git使用手册:生成SSH Key
关于SSH Key的使用和公钥在gitHub、gitLab的配置等,请参考文章:Git使用手册:使用SSH Key及配置SSH key公钥
关于GIT 工作区、暂存区、本地仓库、远程仓库的概念及关系,请参考文章:Git使用手册:工作区、暂存区、本地仓库、远程仓库
关于GIT 从远程仓库下载项目到本地工作区的操作,请参考文章:Git使用手册:git clone 克隆下载远程仓库项目工程到本地工作区
关于GIT Checkout的使用,请参考文章: Git使用手册:git checkout 创建分支、切换分支

关于Git status命令使用解读,请参考文章Git使用手册:git status 查看本地工作区、暂存区中文件的修改状态

关于Git diff和Git add命令使用,请参考文章:Git使用手册:git diff 、 git add 、 git diff --cached 命令详解

关于Git commit命令使用详解,请参考文章:Git使用手册:git commit -m/-am/-a -m 提交文件至本地仓库区

关于Git fetch命令使用,请参考文章:Git使用手册:git fetch 将远程仓库的分支及分支最新版本代码拉取到本地

关于Git pull命令使用,请参考文章:Git使用手册:git pull origin 拉取代码到本地,解决拉取代码时发生的文件冲突

关于Git push命令使用,请参考文章:Git使用手册:git push 推送提交本地仓库代码文件到远程仓库

关于Git log命令使用,请参考文章:Git使用手册/Git教程:git log 查看git提交日志记录





本篇文章围绕git的分支操作进行讲解。


列出本地所有分支:

命令:git branch

注意:当前所在的分支会被星号标示出来


创建一个新分支:

命令:git branch 分支名称

执行创建新分支命令前,我们使用gitbranch命令可以查看到,仅有master主干分支。

执行创建新分支命令后,我们再使用gitbranch命令,可以查看到多了一个分支,这个分支就是我们刚刚创建出来得。

但图中的master和xuzhangzheng1这两个分支在显示的时候有些区别,master分支前多个一个*号,且master分支字体颜色与xuzhangzheng1分支不同。


这种显示区别的原因是因为,当前使用的分支为master分支。

删除指定本地分支:

命令:git branch -d 删除的分支名称


如上图所示,首先使用git branch查看本地现有分支,再进行删除apiThirdTest分支操作.

操作完成后,可以看到提示:Deleted branch apiThirdTest (was a5d8ca0)

含义为:删除了分支apiThirdTest,本次仓库版本号为a5d8ca0

删除完毕后,我们再使用 git branch 查看本地现有分支,可以看到本地已经没有apiThirdTest分支了,确认已经删除了。

删除本地分支异常情况:

1. 要删除的分支在本地仓库中含有未合并的代码:

当我们在一个分支中进行过操作(新增、修改、删除),若操作已经提交到了本地仓库中,在执行git branch -d 分支名称 删除指定名称的分支时,出现如下图情况:


提示:

error: The branch 'function' is not fully merged.
If you are sure you want to delete it, run 'git branch -D function'.

当前分支没有进行合并,如果要删除这个分支,请使用git branch -D 分支名称命令

这里发现命令与之前使用的命令有所不同,查阅资料发现,-D为强制删除,-d为正常操作情况下的删除。

因此,在这种情况下,如果仍然要删除这个分支的话,有2种做法:

1)切换到要删除的分支中,将代码进行合并到远程分支;或切换到本地其他分支中,使用git merge命令将要删除的分支的代码合并到已切换的分支中,再进行删除操作,即可完成分支的删除。


如上图所示,我们切换到了xuzhangzheng2分支中,使用git merge分支将function的未合并代码合并到当前分支中,再执行删除命令,可以看到删除成功了,通过git branch 查看本地现有分支也没有看到function分支,确认已经删除成功。

2)使用git branch -D 分支名称 命令强制删除指定分支

第二种操作后如图:


先查看本地分支,进行强制删除,再查看本地分支,发现删除成功。


2. 要删除的分支为当前正在使用的分支:

如图所示,如果要删除的分支是当前正在使用的分支,在执行git branch -d 分支名称 进行删除分支操作时,

会提示:

error: Cannot delete branch 'xuzhangzheng2' checked out at 'D:/workspace/java/java/SDK-practice'

表示无法删除分支'xuzhangzheng2',如果要删除这个分支的话,可以切换到其他分支后,再进行删除操作。

这里使用强制删除命令也是无法删除的,如图所示:



注意:此处删除的是本地的指定分支名称,不会删除远程仓库的分支

如上述操作删除了本地仓库的apiThirdTest分支,我们登录到远程仓库中查看远程仓库的分支,发现apiThirdTest还在,所以 git branch -d 分支 仅仅只能删除本地仓库中,非当前checkout 的分支外的其他分支。


删除远程分支:

注意:在工作中不要使用命令进行操作,且删除分支时需要谨慎进行,因为一但删除远程分支,便无法进行回滚。

在我们删除本地分支后,如果想要通过本地命令行一同将远程分支删除掉的话,可以使用如下命令:
命令:git push origin :分支名称
注意,分支名称前面有一个冒号。
执行命令前,我们登录到gitLab上查看远程仓库现有分支:

如果我们要删除originFunction分支的话,操作如下:

如上图所示,我们看到再执行命令后,提示: - [deleted]         originFunction

表示已删除originFunction分支。

我们再登录到gitLab上查看远程仓库现有分支:


确实originFunction在远程仓库上已经被删除了。

但我们再使用git branch查看本地分支,发现originFunction还在。

因为我们所执行的命令是删除远程仓库中的指定分支名称的分支,所以不会删除本地仓库中对应名称的分支。

这种情况下,不建议删除本地中现存的对应名称的分支。因为可以视为一种补救措施,若远程仓库对于删除、回滚等操作未加权限控制的话,由于误操作导致远程分支被删除,恰好对应的本地分支的代码是最新或最近几个版本的代码,可以将本地的分支提交到远程分支,将损失减少一部分。


注意:在工作中不要使用命令进行操作,且删除分支时需要谨慎进行,因为一但删除远程分支,便无法进行回滚。






如您有其他问题,希望可以通过留言得形式及时交流,有书写错误和可优化的地方也希望及时提出,感谢。


猜你喜欢

转载自blog.csdn.net/u013374164/article/details/78645080