前言

  我一直在免费用的翻那啥的工具最近开始对免费用户限速了,延迟超高,干啥都贼卡,git push 推送仓库到 GitHub 也得好几次才能成功,实在受不了啦啊啊啊!于是,我做了一个违背祖宗的决定(bushi~

  其实,我以前一直以为 Hexo 博客的配置文件_config.yml中,部署代码deploy:里的repo:仓库地址是执行部署的hexo d命令和推送远端git push命令的共有地址,因为我以前一直都是部署和备份都在 GitHub 的同一个仓库(不同的分支)嘛,所以造成了这样的误解,其实它俩是可以不相同的。呐,这是之前的配置:

1
2
3
4
5
6
7
# Deployment(部署)
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: https://github.com/Barry-Flynn/Barry-Flynn.github.io #GitHub仓库地址
branch: master # 默认使用 master 分支(Github现在改名为main分支)
# message: Update Hexo Static Content # 你可以自定义此次部署更新的说明

  此外,本地的 Hexo 博客根目录的文件夹名字也是可以直接鼠标右键修改的,我以前不了解 git 命令,生怕改完文件夹名字会出什么乱子,而且当初搭建博客的时候跟着某教程傻不拉几的直接把文件夹名字设成了Barry-Flynn.github.io了,于是之后每次用 Windows 的命令行黑窗口进我的博客目录的时候,cd命令后面都得输入一大串,麻烦死了。再然后,除了能改名,这个博客文件夹其实也可以随便挪位置的……只恨知道得太晚啊。

想知道怎么把博客从 GitHubPage 转移到个人服务器的可以去看我这篇文章 → 【Hexo博客】部署到腾讯云轻量应用服务器(使用宝塔面板),本篇文章只讲更换远程仓库地址,不讲更换博客网页部署地址。

初步探索

一开始其实我是想远程推送到我的服务器进行备份的,但是我是失败了:

1
2
3
4
5
6
7
E:\BarryFlynn\hexoBlog>git push
fatal: unable to access 'https://github.com/Barry-Flynn/Barry-Flynn.github.io.git/': Failed to connect to github.com port 443: Timed out

E:\BarryFlynn\hexoBlog>git remote show origin
fatal: unable to access 'https://github.com/Barry-Flynn/Barry-Flynn.github.io.git/': OpenSSL SSL_read: Connection was reset, errno 10054

E:\BarryFlynn\hexoBlog>

因为我发现,即使我博客的配置文件_config.yml中,部署代码deploy:里的repo:仓库地址早就改成服务器的相应地址了,而且博客早都部署服务器上展示好几天了,我 git push 的远程仓库还是原来的 GitHub 仓库地址,而且因为网络问题连接不上……后来才知道原来得改啊,那行,正好得改,为了节省服务器流量,我也不备份服务器上了,还是改地址备份到gitee码云吧。

正式步骤

1、建立gitee仓库

我建的私有仓库,当然,你可以建公开的,名字随意。

2、查看原来远程仓库地址

git remote -v
1
2
3
E:\BarryFlynn\hexoBlog>git remote -v
origin https://github.com/Barry-Flynn/Barry-Flynn.github.io.git (fetch)
origin https://github.com/Barry-Flynn/Barry-Flynn.github.io.git (push)

3、删除远程库

git remote rm origin

4、添加远程git库

git remote add origin 你的码云仓库https或ssh链接地址
<!-- 比如 -->
git remote add origin git@gitee.com:Barry-Flynn/hexoblog.git

其中httpsssh两种连接方式的区别:

  • 用https以后被次备份都得输一次码云账号密码
  • 用ssh就不用了每次都输密码了,但要往gitee上添加公钥

码云生成/添加SSH公钥:https://gitee.com/help/articles/4181

5、查看现在远程库地址

git remote -v
1
2
3
E:\BarryFlynn\hexoBlog>git remote -v
origin https://gitee.com/用户名/仓库名.git (fetch)
origin https://gitee.com/用户名/仓库名.git (push)

可以看到已经更换成功了。

6、更新远程仓库

先把前两步走了:

git add .
git commit -m "你此次更新的注释"

然后再push推送:

1
2
3
4
5
6
7
E:\BarryFlynn\hexoBlog>git push
fatal: The current branch hexo has no upstream branch.
To push the current branch and set the remote as upstream, use

git push --set-upstream origin hexo


啊哦,报错了,机翻如下:

致命:当前分支hexo没有上游分支。
要推送当前分支并将远程分支设置为上游,请使用
git push——设置上游原点hexo

原来,由于我之前在 GitHub 仓库把源码备份在了新建的 hexo 分支里,但码云这个新建的仓库还没有 hexo 分支,所以要加上它提示的那句话:

1
2
3
E:\BarryFlynn\hexoBlog>git push --set-upstream origin hexo
remote: [session-224227aa] Access denied
fatal: unable to access 'https://gitee.com/用户名/仓库名.git/': The requested URL returned error: 403

又报错,有完没完了?经搜索,得知:

修改局域网密码,或git密码后, 发现任何操作都会抛出这个git remote: HTTP Basic: Access denied 错误,原因就是本地的git配置的用户名、密码和gitlab上注册的用户名、密码不一致了,需要同步一下密码。

那好吧,蛮简单的,执行一下这行代码:

git config --system --unset credential.helper

再重新push一下,这次让输入了一次码云的账号密码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
E:\BarryFlynn\hexoBlog>git push --set-upstream origin hexo
Username for 'https://gitee.com': 你的用户名
Password for 'https://用户名@gitee.com': #注意密码输入时不显示
Enumerating objects: 660, done.
Counting objects: 100% (660/660), done.
Delta compression using up to 4 threads
Compressing objects: 100% (575/575), done.
Writing objects: 100% (660/660), 1.15 MiB | 1.06 MiB/s, done.
Total 660 (delta 216), reused 45 (delta 7), pack-reused 0
remote: Resolving deltas: 100% (216/216), done.
remote: Powered by GITEE.COM [GNK-6.2]
remote: Create a pull request for 'hexo' on Gitee by visiting:
remote: https://gitee.com/用户名/仓库名/pull/new/用户名:hexo...用户名:master
To https://gitee.com/用户名/仓库名.git
* [new branch] hexo -> hexo
Branch 'hexo' set up to track remote branch 'hexo' from 'origin'.

现在可以去看一下,码云的该仓库就有了hexo分支了,以后备份的命令和之前在GitHub上时一样:

git add . 
git commit -m "你的本次更新备注"
git push origin hexo

以后部署(deploy)博客的地址是配置文件里写的服务器地址,

而远程(remote)备份push仓库的地址就是git中设置的码云地址了。

不得不说,有了服务器用来部署,又换到码云进行备份,速度都比以前找工具翻那玩意折腾到GitHub的感受要好的多得多!啊,愿天下再也没有连接失败!现在的部署和备份速度真他娘的爽!博客加载起来也真他娘的丝滑流畅!


参考文章:

[1] CSDN - hexo博客备份迁移教程

[2] CSDN - git报错“remote: HTTP Basic: Access denied”的解决方法

[3] CSDN - git remote: HTTP Basic: Access denied 错误解决办法

[4] CSDN - git修改远程仓库地址