这个对于理解 hexo 和 git 非常重要。
远程仓库是我们的数据存储的地方,我们有以下命令可以查看和设置远程仓库.
本地关联线上
这个主要适用于在本地开发后,想要传到线上的 git 中,并且已经在线上创建了版本库,比如 origin_repo
所以,可以在本地的项目目录下执行
git remote add origin git@github.com:github_name/origin_repo.git
推送内容
git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
设置代理
有几次 push
的时候,总是报
Could not resolve host: gitee.com
造成这个的原因,可能有很多,比如突然间换了 wifi
导致网络出现不知名原因,又或者用了 vpn
之类的。
如果是用了 vpn
可以通过设置代理解决,比如
git config --global http.proxy http://127.0.0.1:1087
不然就试试重启。
查看远程仓库
git remote -v
可以显示出
origin git@github.com:benpaodewoniu/mergehexo.git (fetch)
origin git@github.com:benpaodewoniu/mergehexo.git (push)
删除远程仓库
git remote rm origin
修改远程仓库
直接修改
git remote set-url origin xxxxx.git
Git 更换远程服务器的 URL
确认当前网络地址: git remote -v
git remote -v
origin https://github.com/USERNAME/REPOSITORY.git (fetch)
origin https://github.com/USERNAME/REPOSITORY.git (push)
USERNAME/REPOSITORY 换成自己的
更换地址
git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git
再次确认网络地址
git remote -v
origin https://github.com/USERNAME/OTHERREPOSITORY.git (fetch)
origin https://github.com/USERNAME/OTHERREPOSITORY.git (push)
如果是使用SSH的存取地址,指令一样是使用git remote set-url,再接上新的SSH URL就可以更换,指令如下:
git remote set-url origin git@github.com:USERNAME/OTHERREPOSITORY.git
不管是要HTTP/HTTPS跟SSH,二種存取網址都是可以直接做更換,然後下次git push/ git fetch 就會到新設定的網址去了唷。
使用线上版本强制覆盖本地版本
git fetch --all
git reset --hard origin/master
同时提交代码到 github 和 gitee
现在想把自己的博客,同时提交到 gitee
和 github
,作为一个双备份。
相关的参考资料。
先说一下背景。
- 这个博客本来是提交到
gitee
的私仓的 - 我的
ssh key
已经在公司的github
上使用了,所以,我需要创建多个ssh key
一般的情景,没有我这个复杂,可以直接参考简单的方法,比如
所以,如果你执行
git remote -v
可以在我的博客看到
origin git@gitee.com:**/hexo.git (fetch)
origin git@gitee.com:**/hexo.git (push)
所以,要先把远程仓库给删掉。
git remote rm origin
这个 origin
就是前面的前缀,如果,你有多个 git
地址,比如
gitee git@gitee.com:**/hexo.git (fetch)
gitee git@gitee.com:**/hexo.git (push)
github git@github.com:**/hexo.git (fetch)
github git@github.com:**/hexo.git (push)
要删除某一个的话,可以
git remote rm 加上前缀名字
git remote rm github
我们再来为 github
单独建一个 ssh key
。因为,我的 ssh key
已经在另外一个人那里使用了,所以,我需要单独创建一个。
使用
ssh-keygen -t rsa -C "licong" -f ~/.ssh/licong
会发现,我的 ~/.ssh
下面多了几个文件。把相关的 ssh key
放在 github
的 settings
中。
然后,我们创建一个 config
的文件,这个文件内容为
# bbsx
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# hexo
Host licong.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/licong
这里面的 Host
是进行识别的。识别的是
git@Host:**/hexo.git
通过 HOST
来区分具体提交到哪个 Host
,然后,会替换成 HostName 的真实地址。下面会举一个真实的例子。
我在 github
上创建一个私仓,地址为
git@github.com:benpaodewoniu/hexo.git
但是,如果我提交到这个地址,会报错。
具体原因是,关于 Host
等于 github.com
的 ssh key
我放在公司的项目下了,所以,我需要更改上面的地址,改为
git@licong.com:benpaodewoniu/hexo.git
所以,我现在要添加两个仓库地址了。
git remote add github git@licong.com:benpaodewoniu/hexo.git
git remote add gitee git@gitee.com:haee/hexo.git
网上还有其他方案,比如修改 .git
的 config
,但是,我更推荐这个,因为比较方便。
如果使用 git remote -v
可以看到
gitee git@gitee.com:haee/hexo.git (fetch)
gitee git@gitee.com:haee/hexo.git (push)
github git@licong.com:benpaodewoniu/hexo.git (fetch)
github git@licong.com:benpaodewoniu/hexo.git (push)
现在可以测试一下连通性
ssh -T git@licong.com
ssh -T git@github.com
如果,连通性没有问题,我们就可以提交了。
提交到 github
上
git push github master
提交到 gitee
上
git push gitee master
至此,我们就能把一个项目提交到不同的平台了。