# 从远程仓库获取更改

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

## 获取更改的选项

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

## 克隆仓库

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

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

克隆存储库时，可以从[多个不同的 URL](/zh/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/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/pull-requests/how-tos/merge-and-close-pull-requests/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)
  ```
* [连接问题故障排除](/zh/get-started/using-github/troubleshooting-connectivity-problems)