# 从远程仓库获取更改

您可以使用常用 Git 命令访问远程仓库。

## 获取更改的选项

与[远程存储库](/zh/enterprise-server@3.22/get-started/git-basics/about-remote-repositories)交互时，这些命令非常有用。
`clone` 和 `fetch` 将远程代码从存储库的远程 URL 下载到本地计算机，`merge` 用于将其他人的工作与你的工作合并在一起，而 `pull` 是 `fetch` 和 `merge` 的组合。

## 克隆仓库

若要获取其他用户存储库的完整副本，请使用 `git clone`，如下所示：

```shell
$ git clone https://HOSTNAME/USERNAME/REPOSITORY.git
# Clones a repository to your computer
```

克隆存储库时，可以从[多个不同的 URL](/zh/enterprise-server@3.22/get-started/git-basics/about-remote-repositories) 中进行选择。 登录到 GitHub 后，单击 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-code" aria-label="code" role="img"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg>代码**时，这些 URL 会在仓库的主页上显示。

![存储库的主页的屏幕截图。 绿色“Code”按钮以橙色标出并展开，显示存储库的 HTTPS URL。](/assets/images/help/repository/remotes-url-global-nav-update.png)

运行 `git clone` 时，会执行以下操作：

* 创建名为 `repo` 的新文件夹
* 将它初始化为 Git 仓库
* 创建一个名为 `origin` 的远程，指向您克隆自的 URL
* 仓库的所有文件和提交记录都下载到指定的位置
* 默认分支已检出

对于远程存储库中的每个分支 `foo`，在本地存储库中创建相应的远程跟踪分支 `refs/remotes/origin/foo`。 通常可将此类远程跟踪分支名称缩写为 `origin/foo`。

## 从远程仓库获取更改

使用 `git fetch` 检索其他人完成的新工作。 从存储库中提取会获取所有新的远程跟踪分支和标记，而\_无需\_将这些更改合并到自己的分支中。

如果已经有本地存储库包含为所需项目设置的远程 URL，则可以通过在终端使用 `git fetch *remotename*` 获取所有新信息：

```shell
$ git fetch REMOTE-NAME
# Fetches updates made to a remote repository
```

否则，您可以随时添加新的远程，然后获取。 有关详细信息，请参阅“[管理远程仓库](/zh/enterprise-server@3.22/get-started/git-basics/managing-remote-repositories)”。

## 合并更改至本地分支

合并可将您的本地更改与其他人所做的更改组合起来。

通常将远程跟踪分支（即从远程仓库获取的分支）与您的本地分支进行合并：

```shell
$ git merge REMOTE-NAME/BRANCH-NAME
# Merges updates made online with your local work
```

## 从远程仓库拉取更改

`git pull` 是在同一命令中完成 `git fetch` 和 `git merge` 的便捷方式：

```shell
$ git pull REMOTE-NAME BRANCH-NAME
# Grabs online updates and merges them with your local work
```

由于 `pull` 会对检索到的更改执行合并，因此应确保您在运行 `pull` 命令之前将本地更改提交。 如果遇到无法解决的[合并冲突](/zh/enterprise-server@3.22/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line)，或者如果你决定退出合并，则可以使用 `git merge --abort` 将分支返回到拉取之前的位置。

## 其他阅读材料

* [《Pro Git》一书中的“使用远程”](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes)