在开发中,我们经常遇到,本地仓库的分支跟远程仓库的分支不一致了,虽然这不影响我们正常的代码提交,但是看着很不爽,这时该怎么办?如果你也遇到同样的烦恼,请往下看:
Admin@WW051 MINGW64 /f/HYB/MicroService (master)
$ git branch -r ## 查看本地仓库中记录的远程仓库分支
origin/HEAD -> origin/master
origin/dev-V3.5.3
origin/dev-V3.6.0
origin/dev-V3.6.1
origin/dev-V3.6.2
origin/dev-V3.7.0
origin/dev-V3.7.1
origin/dev-V3.8.0
origin/dev-chengdu-data
origin/master
origin/test-V3.7
去GitLab中查看分支,如下表,发现明显不符。
Admin@WW051 MINGW64 /f/HYB/MicroService (master)
$ git remote show origin ##查看远程仓库分支和本地仓库的远程分支记录的对应关系
* remote origin
HEAD branch: master
Remote branches:
dev-V3.7.0 tracked
dev-V3.7.1 tracked
dev-V3.8.0 tracked
dev-chengdu-data tracked
master tracked
## 以下代表远程仓库已经删除的分支
refs/remotes/origin/dev-V3.5.3 stale (use 'git remote prune' to remove)
refs/remotes/origin/dev-V3.6.0 stale (use 'git remote prune' to remove)
refs/remotes/origin/dev-V3.6.1 stale (use 'git remote prune' to remove)
refs/remotes/origin/dev-V3.6.2 stale (use 'git remote prune' to remove)
test-V3.7 tracked
Local branches configured for 'git pull':
dev-V3.6.0 merges with remote dev-V3.6.0
......
Local refs configured for 'git push':
dev-V3.7.0 pushes to dev-V3.7.0 (up to date)
......
Admin@WW051 MINGW64 /f/HYB/MicroService (master)
$ git remote prune origin ## 删除远程仓库已经删除的分支
Pruning origin
* [pruned] origin/dev-V3.5.3
* [pruned] origin/dev-V3.6.0
* [pruned] origin/dev-V3.6.1
* [pruned] origin/dev-V3.6.2
Admin@WW051 MINGW64 /f/HYB/MicroService (master)
$ git branch -r ## 可以看到本地仓库中记录的远程仓库分支明显干净了些
origin/HEAD -> origin/master
origin/dev-V3.7.0
origin/dev-V3.7.1
origin/dev-V3.8.0
origin/dev-chengdu-data
origin/master
origin/test-V3.7
Admin@WW051 MINGW64 /f/HYB/MicroService (master)
$ git branch -a ## 查看本地仓库和本地仓库中记录的远程仓库分支
dev-V3.6.0 ## 需要删除
dev-V3.6.1 ## 需要删除
dev-V3.6.2 ## 需要删除
dev-V3.7.0
dev-V3.7.1
dev-chengdu-data
* master
test-V3.7
remotes/origin/HEAD -> origin/master
remotes/origin/dev-V3.7.0
remotes/origin/dev-V3.7.1
remotes/origin/dev-V3.8.0 ## 需要在本地创建
remotes/origin/dev-chengdu-data
remotes/origin/master
remotes/origin/test-V3.7
注意:删除本地仓库的时候确保代码都已经提交了
Admin@WW051 MINGW64 /f/HYB/MicroService (master)
$ git branch -d dev-V3.6.0 dev-V3.6.1 dev-V3.6.2 ##删除本地多余的分支
Deleted branch dev-V3.6.0 (was 8abce772).
Deleted branch dev-V3.6.1 (was b7b95fa6).
Deleted branch dev-V3.6.2 (was 6b1151e2).
Admin@WW051 MINGW64 /f/HYB/MicroService (master)
$ git checkout dev-V3.8.0 ## 切换到该分支,这时会拉取远程分支到本地
Switched to a new branch 'dev-V3.8.0'
Branch 'dev-V3.8.0' set up to track remote branch 'dev-V3.8.0' from 'origin'.
Admin@WW051 MINGW64 /f/HYB/MicroService (dev-V3.8.0)
$ git branch -a ## 这时看到本地和远程的分支一致了
dev-V3.7.0
dev-V3.7.1
* dev-V3.8.0
dev-chengdu-data
master
test-V3.7
remotes/origin/HEAD -> origin/master
remotes/origin/dev-V3.7.0
remotes/origin/dev-V3.7.1
remotes/origin/dev-V3.8.0
remotes/origin/dev-chengdu-data
remotes/origin/master
remotes/origin/test-V3.7