文章

git-remote

管理远程仓库地址,添加、删除、查看远程仓库。

git-remote

git remote

git remote 是 Git 中用于管理远程仓库连接(remote repository)*的命令。它本身不涉及具体的「上传」或「拉取」,而是*负责告诉本地仓库:有哪些远程仓库、它们叫什么名字、地址在哪儿

git remote 是用来 管理远程仓库的名字与地址(URL)映射关系 的命令。

常见用途速查表

任务命令
查看远程仓库列表git remote
查看远程仓库详细地址git remote -v
添加远程仓库git remote add <name> <url>
删除远程仓库git remote remove <name>
修改远程地址git remote set-url <name> <new-url>
重命名远程仓库git remote rename <old> <new>

常用命令详解

查看当前有哪些远程仓库

1
git remote

输出:

1
origin

说明有一个叫 origin 的远程仓库。

查看远程仓库详细地址(含读/写 URL)

1
git remote -v

输出:

1
2
origin  https://github.com/user/myrepo.git (fetch)
origin  https://github.com/user/myrepo.git (push)
  • fetch 是用于 git pull 等操作的地址;

  • push 是用于 git push 的地址。

添加远程仓库

1
git remote add origin https://github.com/user/myrepo.git

这会把 origin 这个名字绑定到远程仓库 URL 上。

注意:

  • origin 是个默认名称,不强制;
  • 可以添加多个远程,比如:
1
git remote add backup git@backup.example.com:repo.git

删除远程仓库

1
git remote remove origin

或:

1
git remote rm origin

这只是删除「地址记录」,不会影响远程仓库本身。

修改远程仓库地址

1
git remote set-url origin git@github.com:xxx/yyy.git

适用于:

  • 仓库迁移了;
  • HTTP 改成 SSH;
  • 换成备用源。

重命名远程仓库

1
git remote rename origin github

之后再 push 时写的是:

1
git push github main

git remote 与实际同步的关系

git remote 只是「记录名字和地址」,并不会执行任何上传/下载操作,例如:

操作作用
git fetch origin从 origin 下载提交
git push origin main将本地 main 推送到 origin
git pull origin main从 origin 拉 main 并合并

这些命令才会真正使用通过 git remote 添加的地址。

多远程仓库使用示例

可以同时添加多个远程:

1
2
git remote add origin  https://github.com/my/main.git
git remote add backup  https://gitlab.com/my/backup.git

分别执行:

1
2
git push origin main
git push backup main

深层理解:remoterefspec 与本地分支

git remote 还配合 .git/config 中的配置一起使用。可以查看:

1
cat .git/config

示例内容:

1
2
3
[remote "origin"]
  url = https://github.com/user/repo.git
  fetch = +refs/heads/*:refs/remotes/origin/*

这表示:

  • 把远程所有分支 refs/heads/* 拉取到本地的 refs/remotes/origin/*
  • 本地你可以通过 origin/main 等方式访问远程分支。

什么是 refs

  • refs 全称是 references,翻译为“引用”
  • Git 中所有的分支、标签、远程跟踪分支,都是通过 refs 来管理和指向具体的提交(commit)对象的。
  • 简单来说,refs 是 Git 用来给某个提交打“标签”的机制,是 Git 中指针的抽象

refs 的常见类型和作用目录结构

Git 中的 refs 存储在 .git/refs/ 目录下,常见的主要类型有:

类型路径示例说明
refs/heads/.git/refs/heads/main本地分支指针,指向分支最新提交
refs/remotes/.git/refs/remotes/origin/main远程分支指针,指向远程仓库对应分支
refs/tags/.git/refs/tags/v1.0标签,指向特定提交(一般是发布点)
1
fetch = +refs/heads/*:refs/remotes/origin/*
  • 左边的 refs/heads/*远程仓库(origin)中的所有分支。
  • 右边的 refs/remotes/origin/*本地仓库存放远程分支快照(remote-tracking branches)的路径。

换句话说:

  • 远程仓库里的分支在它的 refs/heads/ 下。
  • git fetch 时,把远程的 refs/heads/* 拉下来,映射成本地的 refs/remotes/origin/*

小技巧

设置默认推送分支:

1
git push -u origin main

这会把当前分支和 origin/main 建立追踪关系,以后你只需:

1
git push

就能自动推到 origin/main

总结

功能命令
查看远程仓库git remote -v
添加远程仓库git remote add <name> <url>
删除远程仓库git remote remove <name>
修改地址git remote set-url <name> <url>
重命名git remote rename <old> <new>
本文由作者按照 CC BY 4.0 进行授权