Git 进阶 - 关联多个远程仓库 remote

在我们开发中,可能需要一个 Git 仓库有多个远程做管理,或者同步。

比如本地的 git 库,既想 push 到 gitlab ,又想推到 github 上,那么可以使用 remote 相关的命令处理。

全面的使用说明通过 help 查看

# brife
git remote -h
# detail
git remote --help

在入门系列第一篇中已经提到,本地 git 项目如何推送到远程仓库中

git remote add origin 

查看远程仓库信息

通过以下命令查看当前的远程库

# 查看远程库
$ git remote 
origin

# 查看远程库及地址
$ git remote -v 
origin  http://git.xxx (fetch)
origin  http://git.xxx(push)

添加多个远程地址

添加 Git 项目添加多个远程地址,有两种方式

添加一个远程地址 ,并命名

1. 添加一个远程仓库,独立管理

命令为:

git remote add  

示例:

  1. 指定一个默认的远程库 orgin
  2. 新增一个远程库 git remote add tina https://github.com/tingtingtina/xxx.git
  3. 有新的提交推到到 repo git push (默认 推到 origin)
  4. 如果要同步到 远程库 tina 中 需要手动指定仓库别名 push git push tina
$ git remote -v
origin  http://git.xxx (fetch)
origin  http://git.xxx (push)
tina    https://github.com/tingtingtina/xxx.git (fetch)
tina    https://github.com/tingtingtina/xxx.git (push)

从信息上也可以看出来,这两个仓库需要独立管理。

2. 为指定仓库设置多个远程地址

命令为:

git remote set-url --add  

为名为 的仓库关联一个仓库地址,不需要主动 push 多个仓库,而是 push 指定仓库,这个仓库下配置的所有相关链接的仓库都会更新。

示例

  1. 为 origin 添加一个链接 git remote set-url --add origin https://github.com/tingtingtina/xxx.git
  2. 这时通过 git remote -v查看信息
    origin 这个仓库下就有配有多个地址了,当 git push 的时候(默认是 origin,也可指定)这个名下所有的远程仓库都会被更新。
$ git remote -v
origin  http://git.xxx (fetch)
origin  http://git.xxx (push)
origin  https://github.com/tingtingtina/xxx.git (push)

扩充

这两种操作的本质都是改变 git 的 config 配置文件

config 文件是当前 git 项目根目录下 .git/config (.git 目录是隐藏文件)
使用 git config -e 命令行也可查看编辑内容。

config 文件内容

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = http://git.xxx
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

当 使用 git remote add 时,追加 [remote "name"] 的标签

[remote "tina"]
    url = https://github.com/tingtingtina/xxx.git
    fetch = +refs/heads/*:refs/remotes/tina/*

使用 git remote set-url --add 会为名为 的仓库添加 url 连接,比如示例中, 在 origin 下会多出一个 url 的键值对

[remote "origin"]
    url = http://git.xxx
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = https://github.com/tingtingtina/xxx.git

删除关联的远程库

针对上面两种设置方式,也有对应的的删除命令

# 删除名为  的远程连接
git remote remove 

# 删除  仓库下的指定连接
git remote set-url --delete  

重命名一个远程仓库

git remote rename  

参考

官方文档

你可能感兴趣的:(Git 进阶 - 关联多个远程仓库 remote)