Git Pull



一个关键的远程 Git 操作,git pull 更新所有相关的远程跟踪分支以及我们当前的本地工作分支。

命令 git pull 确保我们的本地副本始终与远程进行的更改保持最新,并包含来自远程存储库的最新添加。

通过保持本地和远程版本的一致性,我们可以避免项目版本历史记录中出现潜在的差异。

它做了什么?

获取 - 从远程存储库获取最新更改。

合并 - 将最新更改合并到当前分支。

概述

  • 通过 Git pull 命令将远程存储库的更新合并到当前分支。

  • 默认情况下,如果当前分支落后于远程分支,它会将当前分支快进以匹配远程分支。

  • 如果当前分支和远程分支出现分歧,则需要指定诸如 --rebase--no-rebase(或配置 pull.rebase)之类的选项进行协调。

  • 要获取远程更改,git pull 首先使用给定的参数执行 git fetch

  • 默认情况下,git pull 然后执行 git rebasegit merge 来解决分支之间的差异,具体取决于配置或标志。

语法

git pull [<remote>] [<branch>]

<remote> 是远程存储库的名称。

<branch> 是本地分支的名称。

用法

命令 git pull 可以以下列方式使用

基本拉取

可以获取来自跟踪的远程分支的更改并将其合并到当前分支。

git pull

从特定远程和分支拉取

可以获取来自 origin 远程的 main 分支的更改并将其合并到当前分支。

git pull origin main

冲突与快进合并

如果您的分支领先于远程分支,则可以执行快进合并,但它可能存在需要手动解决的冲突。

变基而不是合并

您可以使用带有变基的拉取在远程更改之上应用您的更改。这使历史记录更清晰。

git pull --rebase

选项

git pull 命令具有以下选项

--ff-only

仅快进更改。如果需要合并,则会中止拉取以避免创建合并提交。

git pull --ff-only

--no-ff

即使快进是可能的,它也会强制进行合并提交。

git pull --force

--rebase

命令 git pull --rebase 将本地更改应用于获取的更改之上。有助于以更线性且更清晰的方式维护提交历史记录。

git pull --rebase

--no-rebase

它确保合并,防止变基。

git pull --no-rebase

--quiet 或 -q

  • git reset 命令通常用于管理远程跟踪分支,该分支可以用我们当前分支的修改覆盖。

git pull --quiet

--verbose

  • 命令 git pull --verbose 详细列出已获取和合并的更改信息。

git pull --verbose

--autostash

  • 命令 git pull --autostash 在执行 git pull 之前自动暂存本地更改,并在拉取完成后应用这些更改。

git pull --autostash

--no-edit

  • 如果发生合并,则命令 git pull --no-edit 会跳过合并提交的提交消息编辑器。

git pull --no-edit

--all

要从与我们的本地存储库链接的所有远程存储库获取更改,将使用命令 git pull --all

git pull -- all

要从与我们的本地存储库链接的所有远程存储库获取更改,将使用命令 git pull --all

  • 在管理多个远程时这很有用,例如,在跨不同存储库进行协作或使用分叉的存储库时,这很有优势。

  • 此命令确保所有远程更改都反映在我们的本地存储库中,这有助于同步和协作。

  • 它使将来自不同来源的更新合并到我们的本地开发环境中变得更加容易。

--strategy=<strategy>

命令 git pull --strategy=<strategy> 指定可以使用哪个合并策略。一些常见的策略

  • recursive - 它是默认策略,是一个三方过程。

  • ours - 它保留您版本的內容。

  • theirs - 它使用远程版本的內容。

git pull --strategy=recursive

多个选项的用法

命令 git pull 也可以在一个命令中使用多个选项。

git pull --rebase --autostash --verbose

上述命令将在一个命令中执行所有三个操作,即,使用变基拉取更改、暂存任何未提交的更改,并提供更改的详细输出。

在执行 git pull 之前,最好确保您的工作目录是干净的。这可以使用 git status 命令进行验证。

广告