Close

git remote

SVN 使用单个集中存储库作为开发人员的通信中心,协作是通过在开发人员的工作副本和中央存储库之间传递变更集来实现的。这与 Git 的分布式协作模式不同,后者为每个开发人员提供自己的存储库副本,以及自己的本地历史记录和分支结构。用户通常需要共享一系列提交,而不是一个变更集。Git 允许您在存储库之间共享整个分支,而不是将工作副本中的变更集提交到中央存储库。

git remote 命令是负责同步更改的更广泛系统的一部分。通过 git remote 命令登记的记录与 git fetchgit pushgit pull 命令结合使用。这些命令都有自己的同步职责,可以在相应的链接上进行探索。


git remote


git remote 命令允许您创建、查看和删除与其他存储库的连接。远程连接更像是书签,而不是直接链接到其他存储库。它们不是提供对另一个存储库的实时访问,而是用作方便的名称,可用于引用不太方便的 URL。

例如,下图显示了从您的代码存储库到中央代码存储库和另一个开发人员代码存储库的两个远程连接。您可以将 origin 和 john 快捷方式传递给其他 Git 命令,而不是按其完整 URL 来引用。

使用 git remote 连接其他存储库
控制台窗口
相关资料

高级 Git 日志

Bitbucket 徽标
查看解决方案

了解 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 命令中使用 作为 的便捷快捷方式。有关可接受的 URL 语法的更多信息,请查看下面的“存储库 URL”部分。此命令将在存储库的 ./.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 remote 命令配置远程存储库记录后,可以将远程存储库名称作为参数传递给其他 Git 命令以与代码存储库通信。git fetchgit pull 都可用于从远程存储库读取。这两个命令有不同的操作,将在各自的链接中更深入地解释这些操作。

推送到 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 的持续更新。

人们通过满是工具的墙进行协作

Bitbucket 博客

Devops 示意图

DevOps 学习路径

与 Atlassian 专家一起进行 Den 功能演示

Bitbucket Cloud 与 Atlassian Open DevOps 如何协同工作

注册以获取我们的 DevOps 新闻资讯

Thank you for signing up