freeCodeCamp/guide/chinese/git/git-pull/index.md

123 lines
5.6 KiB
Markdown
Raw Normal View History

---
title: Git Pull
localeTitle: Git Pull
---
## Git Pull
`git pull`是一个Git命令用于从远程更新存储库的本地版本。
它是Git提示网络交互的四个命令之一。默认情况下 `git pull`做两件事。
1. 更新当前本地工作分支(当前已检出分支)
2. 更新所有其他分支的远程跟踪分支。
`git pull` fetches `git fetch` )新提交并将它们合并[ `git merge` ](https://guide.freecodecamp.org/git/git-merge)到你的本地分支中。
该命令的语法如下:
```shell
# General format
git pull OPTIONS REPOSITORY REFSPEC
# Pull from specific branch
git pull REMOTE-NAME BRANCH-NAME
```
其中:
* **选项**是命令选项,例如`--quiet`或`--verbose` 。您可以在[Git文档中](https://git-scm.com/docs/git-pull)阅读有关不同选项的更多信息
* **REPOSITORY**是您的回购的URL。示例https//github.com/freeCodeCamp/freeCodeCamp.git
* **REFSPEC**指定要获取的引用和要更新的本地引用
* **REMOTE-NAME**是远程存储库的名称。例如: _origin_
* **BRANCH-NAME**是您的分支机构的名称。例如: _开发_
**注意**
如果您有未提交的更改, `git pull`命令的合并部分将失败,您的本地分支将不受影响。
因此, _在_从远程存储库中_提取_新提交_之前_ 应_始终在分支中提交更改_ 。
**目录**
* [用`git pull`](#using-git-pull)
* [分布式版本控制](#distributed-version-control)
* [`git fetch` + `git merge`](#git-fetch-plus-git-merge)
* [`git pull`入IDE](#git-pull-in-IDEs)
### 用git pull
使用`git pull`从相应的远程存储库更新本地存储库。例如:在`master`本地工作时,执行`git pull`来更新`master`的本地副本并更新其他远程跟踪分支。 (有关远程跟踪分支的更多信息,请参阅下一节。)
但是,有一些事情要记住这个例子是真的:
* 本地存储库具有链接的远程存储库
* 通过执行`git remote -v`来检查这一点
* 如果有多个遥控器, `git pull`可能不够信息。您可能需要输入`git pull origin`或`git pull upstream` 。
* 您当前签出的分支具有相应的远程跟踪分支
* 通过执行`git status`来检查这一点。如果没有远程跟踪分支Git不知道_从_哪里提取信息。
### 分布式版本控制
Git是一个**分布式版本控制系统** DVCS。使用DVCS开发人员可以在不同的环境中同时处理同一文件。 _将_代码_推_送到共享远程存储库后其他开发人员可以_提取已_更改的代码。
#### Git中的网络交互
只有四个命令可以在Git中提示网络交互。在有信息请求之前本地存储库不知道对远程存储库所做的更改。并且在推送提交之前远程存储库不会意识到本地更改。
四个网络命令是:
* `git clone`
* `git fetch`
* `git pull`
* `git push`
#### DVCS中的分支机构
使用Git时可能会感觉到有相同代码的大量副本在整个地方浮动。每个分支上有相同文件的不同版本。并且每个开发人员的计算机和远程计算机上的相同分支的不同副本。为了跟踪这一点Git使用了一种称为**远程跟踪分支的**东西。
如果在Git存储库中执行`git branch --all` ,远程跟踪分支将显示为红色。这些是远程显示的代码的只读副本。 (最后一次网络交互是什么时候会在本地带来信息?请记住上次更新此信息的时间。远程跟踪分支中的信息反映了该交互的信息。)
使用**远程跟踪分支** 您可以在几个分支上使用Git而无需网络交互。每次执行`git pull`或`git fetch`命令时,都会更新**远程跟踪分支** 。
### git fetch加上git merge
`git pull`是一个组合命令,等于`git fetch` + `git merge`
#### git fetch
`git fetch`本身更新了本地存储库中的所有远程跟踪分支。实际上没有任何变化反映在任何本地工作分支上。
#### git merge
没有任何参数, `git merge`会将相应的远程跟踪分支合并到本地工作分支。
#### git pull
`git fetch`更新远程跟踪分支。 `git merge`使用相应的远程跟踪分支更新当前分支。使用`git pull` ,您可以获得这些更新的两个部分。但是,这意味着如果您签出了`feature`分支并执行`git pull` ,那么当您签出要`master` ,将不会包含任何新的更新。每当你签到另一个可能有新变化的分支时,执行`git pull`总是一个好主意。
### git拉入IDE
其他IDES中的通用语言可能不包括单词`pull` 。如果您注意单词`git pull`但看不到它们,请查找单词`sync` 。
### 将远程PRPull Request放入本地仓库
出于审查等目的应将遥控器中的PR提取到本地存储库。您可以使用`git fetch`命令执行此操作。
`git fetch origin pull/ID/head:BRANCHNAME`
ID是拉取请求IDBRANCHNAME是您要创建的分支的名称。创建分支后您可以使用`git checkout`切换到该brach。
### 关于git pull的其他资源
* [git的供应链管理](https://git-scm.com/docs/git-pull)
* [GitHub帮助文档](https://help.github.com/articles/fetching-a-remote/#pull)
* [GitHub按需培训](https://services.github.com/on-demand/intro-to-github/create-pull-request)
* [同步教程](https://www.atlassian.com/git/tutorials/syncing)
### 关于git的其他资源请访问guide.freecodecamp.org
* [Git合并](../git-merge/index.md)
* [Git结账](../git-checkout/index.md)
* [Git提交](../git-commit/index.md)
* [Git藏匿](../git-stash/index.md)
* [Git分支](../git-branch/index.md)