1 应用场景

因为某些原因, 项目的 github 地址访问不到了或访问太慢,于是把同样的代码提交一份到别的代码托管平台,为方便本地对远程不同仓库代码的拉取/提交,本地需要做一些配置。

下面以 GitHubGitee 为例进行说明,假设已经在两个平台上分别创建了仓库并同步了代码,本地设备上的初始代码是从 GitHub 上拉取的。

2 命令使用

2.1 方法1:使用 git remote set-url

操作步骤如下:

# 1.添加远程仓库
git remote set-url --add origin git@gitee.com:lishasha/git-solutions.git

# 2.查看远程仓库
git remote -v
# 结果如下:
➜  git-solutions git:(master) git remote -v                                                           
origin	git@github.com:flyfreely-lss/git-solutions.git (fetch)
origin	git@github.com:flyfreely-lss/git-solutions.git (push)
origin	git@gitee.com:lishasha/git-solutions.git (push) # 该行为新添加的远程仓库

# 3.如果要提交代码,执行该命令。代码会同时被推送到 github 和 gitee
git push origin

从上述步骤2中可以总结该方法的优、缺点:

优点:代码推送到远程,只需要 push 一次就行了;

缺点:在一台设备上,只能从标有 (fetch) 字样的地址拉取远程仓库代码。

2.2 方法2:直接修改 .git/config文件

操作步骤如下:

  1. 项目根目录下打开 .git/config文件
  2. 找到 [remote "origin"],添加对应的 url,效果如下图:
[remote "origin"]
	url = git@github.com:flyfreely-lss/git-solutions.git
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = git@gitee.com:lishasha/git-solutions.git # 新添加的行
  1. 执行 git remote -v ,会发现结果和方法1是一样的。其实方法1、2是一样的,只不过方法1是通过执行命令的方式修改.git/config 文件,方法2则是直接修改该文件的。

2.3 方法3:使用 git remote add

操作步骤:

# 1.添加远程仓库
git remote add gitee git@gitee.com:lishasha/git-solutions.git

# 2.查看远程仓库
git remote -v
# 结果如下:
➜  git-solutions git:(master) ✗ git remote -v                                                
gitee	git@gitee.com:lishasha/git-solutions.git (fetch)
gitee	git@gitee.com:lishasha/git-solutions.git (push)
origin	git@github.com:flyfreely-lss/git-solutions.git (fetch)
origin	git@github.com:flyfreely-lss/git-solutions.git (push)

# 3.如果要提交代码,执行该命令。代码会被分别推送到 github 和 gitee
git push origin
git push gitee

从上述步骤2中可以总结该方法的优、缺点:

优点:在一台设备上,可以从任意地址拉取远程仓库代码;

缺点:代码推送到远程,需要 push 两次。

3 总结

若只是做一些简单的提交/拉取动作,使用方法1/2即可;若想要做更灵活的控制,建议方法1/2 & 方法3中的方式都可以配置上。