关于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 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 的分支外的其他分支。
表示已删除originFunction分支。
我们再登录到gitLab上查看远程仓库现有分支:
确实originFunction在远程仓库上已经被删除了。
但我们再使用git branch查看本地分支,发现originFunction还在。
因为我们所执行的命令是删除远程仓库中的指定分支名称的分支,所以不会删除本地仓库中对应名称的分支。
这种情况下,不建议删除本地中现存的对应名称的分支。因为可以视为一种补救措施,若远程仓库对于删除、回滚等操作未加权限控制的话,由于误操作导致远程分支被删除,恰好对应的本地分支的代码是最新或最近几个版本的代码,可以将本地的分支提交到远程分支,将损失减少一部分。
注意:在工作中不要使用命令进行操作,且删除分支时需要谨慎进行,因为一但删除远程分支,便无法进行回滚。
如您有其他问题,希望可以通过留言得形式及时交流,有书写错误和可优化的地方也希望及时提出,感谢。