0%

GIT | 远程相关

这个对于理解 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


现在想把自己的博客,同时提交到 giteegithub ,作为一个双备份。

相关的参考资料。

先说一下背景。

  • 这个博客本来是提交到 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 放在 githubsettings 中。

然后,我们创建一个 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.comssh 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

网上还有其他方案,比如修改 .gitconfig ,但是,我更推荐这个,因为比较方便。

如果使用 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

至此,我们就能把一个项目提交到不同的平台了。

请我喝杯咖啡吧~