蒙国造博客

Git 设置不同的 fetch 和 push 地址

一般情况下,如果是一个人用 Git 开发,不需要代码 review 啥的,fetchpush 都一个地址就够了,反正也不需要 review,也不会有人覆盖你的代码。

但是在公司里面,或者正规的代码合并流程,都会有 review 的环节,大概是:

  1. fork 主仓库到个人仓
  2. clone 个人仓到本地
  3. 修改本地代码并提交 commit
  4. push 修改到个人仓
  5. 提交 Merge Request 到主仓库

如果主仓库有更改,还需要另外一步:

  1. 从主仓库同步更改,也就是手动 pull

那么,如何设置个人仓为 push 地址,而设置主仓库为 pull 地址呢?

方法一:多个 origin

第一种方法是,在原 origin 远程仓库地址的基础上,再加一个地址,也就是主仓库地址,例如加一个origin_mian,如下:

git remote add origin_main git@github.com:yeszao/dnmp.git

这样我们总共就配置了 4 个地址,2push2pull

git remote -v

origin git@github.com:MY_REPOSITY/dnmp.git (fetch)
origin git@github.com:MY_REPOSITY/dnmp.git (push)
origin_main git@github.com:yeszao/dnmp.git (fetch)
origin_main git@github.com:yeszao/dnmp.git (push)

在推拉代码的时候就可以这样:

git push origin master
git pull origin_main master

方法二:一个 origin(推荐)

另外一种办法就是,我们只用一个 origin,设置主仓库为 fetch 地址,个人仓库为 push 地址:

git remote set-url origin git@github.com:yeszao/dnmp.git
git remote set-url --add --push origin git@github.com:MY_REPOSITY/dnmp.git

再用 git remote 命令看看配置的地址:

origin git@github.com:MY_REPOSITY/dnmp.git (push)
origin git@github.com:yeszao/dnmp.git (fetch)

这样推拉代码就 很简单了

git push origin master
git pull origin master

如果没有特别的要求,推荐使用方法二,用法和命令都更加简单。

退出移动版