您的位置:首页 > 其它

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

2017-11-27 16:23 1056 查看

相关文章:关于验证是否存在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还在。

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

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

如您有其他问题,希望可以通过留言得形式及时交流,有书写错误和可优化的地方也希望及时提出,感谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐