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

123 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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)