每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
Git(4) – branch分支管理
列出所有分支
git branch
没有参数时,git branch 会列出你在本地的分支。
加上-a
参数可以查看全部分支(包含本地分支和远程分支),远程分支会用红色表示出来(如果你开了颜色支持的话)
加上-r
参数可以查看远程分支
其中带*
号标注的是当前所在的分支
D:\che\im-api>git branch
20210421_add_get_user_reward
20210520_manage_chatroom_entry_wangql
20210604_user_reward_chatroom_entry
* 20210622_feat_message_recall_wangql
20210622_fix_extra_content_decode_wangql
develop
master
D:\che\im-api>git branch -a
20210421_add_get_user_reward
20210520_manage_chatroom_entry_wangql
20210604_user_reward_chatroom_entry
* 20210622_feat_message_recall_wangql
20210622_fix_extra_content_decode_wangql
develop
master
remotes/origin/20210324_init_develop_env
remotes/origin/20210421_add_get_user_reward
remotes/origin/20210520_manage_chatroom_entry_wangql
remotes/origin/20210604_user_reward_chatroom_entry
remotes/origin/20210622_feat_message_recall_wangql
remotes/origin/20210622_fix_extra_content_decode_wangql
remotes/origin/HEAD -> origin/develop
remotes/origin/develop
remotes/origin/master
D:\renrenche\im-api>git branch -r
origin/20210324_init_develop_env
origin/20210421_add_get_user_reward
origin/20210520_manage_chatroom_entry_wangql
origin/20210604_user_reward_chatroom_entry
origin/20210622_feat_message_recall_wangql
origin/20210622_fix_extra_content_decode_wangql
origin/HEAD -> origin/develop
origin/develop
origin/master
切换分支
git checkout (branchname)
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容。
根据指定版本号创建分支: git checkout -b branchName commitId
D:\renrenche\im-api>git checkout 20210324_init_develop_env
Switched to a new branch '20210324_init_develop_env'
Branch '20210324_init_develop_env' set up to track remote branch '20210324_init_develop_env' from 'origin'.
D:\renrenche\im-api>git branch
* 20210324_init_develop_env
20210421_add_get_user_reward
20210520_manage_chatroom_entry_wangql
20210604_user_reward_chatroom_entry
20210622_feat_message_recall_wangql
20210622_fix_extra_content_decode_wangql
develop
master
删除分支
git branch -d (branchname)
用来删除本地分支
git push origin --delete [branchname]
用来删除远端分支,在删除远程分支时,同名的本地分支并不会被删除,所以还需要单独删除本地同名分支
清理本地无效分支(远程已删除本地没删除的分支): git fetch -p
D:\IdeaProjects\spring-boot-study>git branch
master
* test
test_new
D:\IdeaProjects\spring-boot-study>git branch -d test_new
Deleted branch test_new (was 4914823).
D:\IdeaProjects\spring-boot-study>git push origin -d test_new
remote: Powered by GITEE.COM [GNK-5.0]
To https://gitee.com/ShanXiXiaoMoTou/spring-boot-study.git
- [deleted] test_new
常见错误:
error: Cannot delete branch ‘XXX’ checked out at ‘XXXXXX’
在删除分支时,当前分支为在要删除的分支上,则会报以上错误。解决办法就是切换到其他任意分支,再去删除目标分支。
D:\IdeaProjects\spring-boot-study>git branch
master
* test_new
D:\IdeaProjects\spring-boot-study>git branch -d test_new
error: Cannot delete branch 'test_new' checked out at 'D:/IdeaProjects/spring-boot-study'