近期由于部门的Git服务器因特殊原因被破坏,不得已Git服务器需要做迁移;
Git服务器老挂,老是push 失败。
废话不多说,直接上解决方案:
// 在项目目录下打开Git客户端
// 1. 检查当前分支情况
$ git branch -vv
dev 411237c [origin/dev] fix: "commit information"
* dev_gmq c95565a [origin/dev_gmq: ahead 15] "commit information"
master f57fdce [origin/master: ahead 2, behind 1] fix: "commit information"
// 当前项目共三个分支,* 表示当前分支
// 左侧表示本地分支,右侧origin表示远程分支
// 左右关系为本地分支对应远程分支,push代码会推到所属远程分支
// 2. 因远程服务器地址更改,需要将本地与远程断开关联
$ git remote remove origin
// 该指令用于切断本地分支与远程关联
// 3. 在此检查当前分支情况
git branch -vv
dev 411237c fix:
* dev_gmq c95565a Merge branch 'master' of http://**********
master f57fdce fix:
// 发现只剩本地分支,与远程断开
// 4. 重新连接新的远程
$ git remote add origin https://*********************.git
// 该指令用于连接远程地址,origin后边跟项目在Git的新地址
// 5. 从新地址抓取分支情况
$ git fetch
// 执行该指令后会打印以下日志
from remote: Enumerating objects: 55, done.
remote: Counting objects: 100% (55/55), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 37 (delta 9), reused 7 (delta 0)
Unpacking objects: 100% (37/37), done.
From https://git.******************
* [new branch] dev -> origin/dev
* [new branch] dev_gmq -> origin/dev_gmq
* [new branch] master -> origin/master
// 发现本地分支与远程分支一一对应,拉取成功
// 距离真正成功还差最后一步
// 6. 不知道当前分支在哪,可以任选一个分支checkout出来
$ git checkout dev_gmq
Already on 'dev_gmq'
// 发现正好处于要check的分支上,后边还会有最近的一些提交信息,没粘
// 7. 最后一步,将本地分支与远程建立关联
$ git branch -set-upstream-to=origin/dev_gmq
error: unknown switch `s'
// 一开始使用set选项仅写了一个"-",提示选择参数错误
// 正确指令
$ git branch --set-upstream-to=origin/dev_gmq
Branch 'dev_gmq' set up to track remote branch 'dev_gmq' from 'origin'.
// 使用正确指令,本地关联远程成功
// 8. 检查分支情况
$ git branch -vv
dev 411237c fix:
master f57fdce fix: 调试bug
* dev_gmq 546e1af [origin/dev_gmq: behind 3] fix:
// 发现dev_gmq本地分支已经与远程的origin/dev_gmq分支关联
// 9. 最后,对所有分支执行第七步,将所有本地分支与远程分支关联即可
// 操作之后,在此检查分支情况
$ git branch -vv
dev 411237c [origin/dev] fix: 测试
* dev_gmq c95565a [origin/dev_gmq: ahead 15] Merge branch 'master'
master f57fdce [origin/master: ahead 2, behind 1] fix: 调试bug
// 至此,所有本地分支与远程已关联,over
总结Git指令:
// 1. 检查当前分支情况
$ git branch -vv
// 2. 因远程服务器地址更改,需要将本地与远程断开关联
$ git remote remove origin
// 3. 在此检查当前分支情况
git branch -vv
// 4. 重新连接新的远程
$ git remote add origin https://*********************.git
// 5. 从新地址抓取分支情况
$ git fetch
// 6. 不知道当前分支在哪,可以任选一个分支checkout出来
$ git checkout dev_gmq
Already on 'dev_gmq'
// 7. 最后一步,将本地分支与远程建立关联
$ git branch --set-upstream-to=origin/dev_gmq
Branch 'dev_gmq' set up to track remote branch 'dev_gmq' from 'origin'.
本文借鉴大佬,问题是前几天遇到的,当时只是把Git指令做了记录,所以趁周末抓紧来写一下记录一下,原文地址忘了。。。
周末愉快~