在我们开发中,可能需要一个 Git 仓库有多个远程做管理,或者同步。
比如本地的 git 库,既想 push 到 gitlab ,又想推到 github 上,那么可以使用 remote 相关的命令处理。
全面的使用说明通过 help 查看
# brife
git remote -h
# detail
git remote --help
在入门系列第一篇中已经提到,本地 git 项目如何推送到远程仓库中
git remote add origin <url>
查看远程仓库信息
通过以下命令查看当前的远程库
# 查看远程库
$ git remote
origin
# 查看远程库及地址
$ git remote -v
origin http://git.xxx (fetch)
origin http://git.xxx(push)
添加多个远程地址
添加 Git 项目添加多个远程地址,有两种方式
添加一个远程地址 <url>,并命名<name>
1. 添加一个远程仓库,独立管理
命令为:
git remote add <name> <url>
示例:
- 指定一个默认的远程库 orgin
- 新增一个远程库
git remote add tina https://github.com/tingtingtina/xxx.git
- 有新的提交推到到 repo
git push
(默认 推到 origin) - 如果要同步到 远程库 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 <name> <url>
为名为 <name> 的仓库关联一个仓库地址,不需要主动 push 多个仓库,而是 push 指定仓库,这个仓库下配置的所有相关链接的仓库都会更新。
示例
- 为 origin 添加一个链接
git remote set-url --add origin https://github.com/tingtingtina/xxx.git
- 这时通过
git remote -v
查看信息
origin 这个仓库下就有配有多个地址了,当git push
的时候(默认是 origin,也可指定<name>)这个名下所有的远程仓库都会被更新。
$ 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 <name> <url>
时,追加 [remote "name"] 的标签
[remote "tina"]
url = https://github.com/tingtingtina/xxx.git
fetch = +refs/heads/*:refs/remotes/tina/*
使用 git remote set-url --add <name> <url>
会为名为<name> 的仓库添加 url 连接,比如示例中, 在 origin 下会多出一个 url 的键值对
[remote "origin"]
url = http://git.xxx
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/tingtingtina/xxx.git
删除关联的远程库
针对上面两种设置方式,也有对应的的删除命令
# 删除名为 <name> 的远程连接
git remote remove <name>
# 删除 <name> 仓库下的指定连接
git remote set-url --delete <name> <url>
重命名一个远程仓库
git remote rename <old> <new>
网友评论