git remote
SVN 使用单个集中存储库作为开发人员的通信中心,协作是通过在开发人员的工作副本和中央存储库之间传递变更集来实现的。这与 Git 的分布式协作模式不同,后者为每个开发人员提供自己的存储库副本,以及自己的本地历史记录和分支结构。用户通常需要共享一系列提交,而不是一个变更集。Git 允许您在存储库之间共享整个分支,而不是将工作副本中的变更集提交到中央存储库。
git remote
git remote
命令允许您创建、查看和删除与其他存储库的连接。远程连接更像是书签,而不是直接链接到其他存储库。它们不是提供对另一个存储库的实时访问,而是用作方便的名称,可用于引用不太方便的 URL。
例如,下图显示了从您的代码存储库到中央代码存储库和另一个开发人员代码存储库的两个远程连接。您可以将 origin 和 john 快捷方式传递给其他 Git 命令,而不是按其完整 URL 来引用。
相关资料
高级 Git 日志
查看解决方案
了解 Bitbucket Cloud 的 Git
Git remote 用法概述
git remote
命令本质上是一个用于管理存储库 ./.git/config
文件中存储的远程条目列表的接口。以下命令用于查看远程列表的当前状态。
查看 git 远程存储库配置
git remote
列出您与其他存储库的远程连接。
git remote -v
与上述命令相同,但包括每个连接的 URL。
创建和修改 git 远程存储库配置
git remote
命令也是修改代码存储库的 ./.git/config
文件的便捷或“助手”方法。下面显示的命令允许您管理与其他存储库的连接。以下命令将修改代码存储库的 /.git/config
文件。以下命令的结果也可以通过使用文本编辑器直接编辑 ./.git/config
文件来实现。
git remote add <name> <url>
创建与远程存储库的新连接。添加远程存储库后,您可以在其他 Git 命令中使用
作为
的便捷快捷方式。
git remote rm <name>
移除与 <name>
远程存储库的连接。
git remote rename <old-name> <new-name>
将远程连接从 <old-name>
重命名为 <new-name>
。
Git remote 讨论
Git 旨在为每个开发人员提供一个完全隔离的开发环境。这意味着信息不会在代码库之间自动来回传递。相反,开发人员需要手动将上游提交拉入其本地代码库,或手动将本地提交推送回中央代码库。git remote
命令只是一个将 URL 传递到这些“共享”命令的比较简单的方法。
origin 远程存储库
当您使用 git clone
克隆存储库时,它会自动创建一个名为 origin 的远程存储库连接,指向克隆的存储库。这对于创建中央存储库本地副本的开发人员很有用,因为它提供了一种拉取上游更改或发布本地提交的简便方法。这种行为也是大多数基于 Git 的项目称其中央存储库为 origin 的原因。
存储库 URL
Git 支持多种引用远程存储库的方法。访问远程代码存储库两种最简单的方法是通过 HTTP 和 SSH 协议。HTTP 是一种允许匿名、只读访问存储库的简便方法。例如:
http://host/path/to/repo.git
但是,通常无法将提交推送到 HTTP 地址(无论如何都不要允许匿名推送)。要进行读写访问,应改用 SSH:
ssh://user@host/path/to/repo.git
您需要在主机上有一个有效的 SSH 帐户,但除此之外,Git 支持通过现成的 SSH 进行身份验证访问。像 BitBucket.com 这样的现代安全第三方托管解决方案将为您提供这些 URL。
Git remote 命令
git remote
命令是许多需要额外附加“子命令”的 Git 命令之一。以下是对常用的 git remote
子命令的考察。
ADD <NAME> <URL>
在 ./.git/config
中添加一条 <name>
远程存储库的记录,位于存储库 url <url>。
接受 -f
选项,该选项将在创建远程记录后立即 git fetch
。
接受 --tags
选项,该选项将立即 git fetch
并从远程存储库导入所有标记。
RENAME <OLD> <NEW>
更新 ./.git/config
,将记录 <OLD>
重命名为 <NEW>
。远程存储库的所有远程跟踪分支和配置设置均已更新。
REMOVE or RM <NAME>
修改 ./.git/config
并删除 <NAME>
远程存储库。远程存储库的所有远程跟踪分支和配置设置均已删除。
GET-URL <NAME>
输出远程记录的 URL。
接受 --push
,查询推送 URL 而不是提取 URL。
使用 --all
,将列出远程服务器的所有 URL。
SHOW <NAME>
输出有关远程存储库 <NAME>
的高级信息。
PRUNE <NAME>
删除远程存储库中不存在的 <NAME>
的所有本地分支。
接受 --dry-run
选项,该选项将列出设置为修剪的分支,但实际上不会对其进行修剪。
Git remote 示例
除了 origin 外,连接到队友的存储库通常也很方便。例如,如果您的同事 John 在 dev.example.com/john.git
上维护了一个可公开访问的存储库,您可以按如下方式添加连接:
git remote add john http://dev.example.com/john.git
拥有对单个开发人员存储库的这种访问权限使得在中央存储库之外进行协作成为可能。这对于处理大型项目的小型团队非常有用。
显示您的远程存储库
默认情况下,git remote
命令将列出以前存储的与其他存储库的远程连接。这将生成单行输出,其中列出远程代码存储库的“书签”名称。
$ git remote
origin
upstream
other_users_repo
使用 -v
选项调用 git remote
将打印已加入书签的存储库名称列表以及相应的存储库 URL。-v
选项代表“详细”。以下是详细 git remote
输出的示例输出。
git remote -v
origin git@bitbucket.com:origin_user/reponame.git (fetch)
origin git@bitbucket.com:origin_user/reponame.git (push)
upstream https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo https://bitbucket.com/other_users_repo/reponame (push)
添加远程存储库
git remote add
命令将创建指向远程存储库的新连接记录。添加远程存储库后,您可以在其他 Git 命令中使用 ./.git/config
中创建一条新记录。以下是此配置文件更新的示例:
$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"]
url = https://bitbucket.com/upstream_user/reponame.git
fetch = +refs/heads/*:refs/remotes/remote_test/*
检查远程存储库
可以将 show 子命令附加到 git remote
,以提供有关远程存储库配置的详细输出。此输出将包含与远程存储库关联的分支列表,以及用于获取和推送的附加端点。
git remote show upstream
* remote upstream
Fetch URL: https://bitbucket.com/upstream_user/reponame.git
Push URL: https://bitbucket.com/upstream_user/reponame.git
HEAD branch: main
Remote branches:
main tracked
simd-deprecated tracked
tutorial tracked
Local ref configured for 'git push':
main pushes to main (fast-forwardable)
从 Git 远程存储库中提取和拉取
推送到 Git 远程存储库
git push
命令用于写入远程存储库。
git push <remote-name> <branch-name>
此示例会将 <branch-name>
的本地状态上传到由 <remote-name>
指定的远程存储库。
重命名和删除远程存储库
git remote rename <old-name> <new-name>
git remote
命令重命名不言自明。执行后,此命令会将远程连接从 <old-name>
重命名为 <new-name>
。此外,这将修改 ./.git/config
的内容,以重命名那里的远程记录。
git remote rm <name>
命令 git remote rm
将删除与 <name>
参数指定的远程存储库的连接。为了演示,我们上来“撤销”上个示例中的远程添加。如果我们执行 git remote rm remote_test
,然后检查 ./.git/config
的内容,就可以看到 [remote "remote_test"]
记录已经不存在了。
分享此文章
下一主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。