当前位置:   article > 正文

Git拉取请求:Git Fetch Vs Pull 主要区别_git pull fetch

git pull fetch

概述

默认情况下,git fetch 命令会获取所有分支和标签(统称为 refs)。git fetch 命令还可以检索用于编译更改历史记录的所有数据。git pull 命令有点类似于 git fetch 命令,但 git pull 命令将所有更改从远程存储库拉取到本地存储库的相应分支,因为我们知道 git fetch 命令首先从远程存储库获取更改,然后将更改存储在本地存储库的单独分支中。

先决条件

了解 git fetch 与 pull 的先决条件可以是对版本控制系统、分支和 Git 的基本了解。在了解 git fetch 命令和 git pull 命令及其区别之前,让我们简要讨论一下它们。

版本控制系统

版本控制系统是软件开发中的一种工具,用于跟踪有关某个代码库(或项目)等的代码、文档和其他重要信息的变化。

有两种类型的版本控制系统:

  • 集中式版本控制系统 (CVCS)
  • 分布式版本控制系统 (DVCS)。

Git 的

Git 是一个版本控制系统,用于跟踪有关某个代码库(或项目)等的代码、文档和其他重要信息的更改。Git 是免费的,也是使用最广泛的版本控制系统之一。我们可以通过命令行以及其图形用户界面 (GUI) 使用 Git。Git 的命令行或终端版本称为 Git Bash,而 Git 的 GUI 版本称为 Git GUI

Git 跟踪项目中的更改并保存称为提交的特定状态。提交是文件当前版本的快照。因此,我们跟踪这些提交,并根据需要恢复到某个提交。

分支

分支是一个独立的开发线,用于添加某些功能和修复错误,而不会妨碍主项目。因此,我们可以并行开发新功能,当开发完成后,我们可以将功能添加回主项目。默认情况下,所有 GitHub 存储库都有可用于生产的 master 分支。

因此,新分支是为修复错误和添加新功能而创建的 master 分支的副本。修复 bug 或添加新功能后,我们可以将分支合并到 master 分支中。git branch 命令使我们能够执行并行开发。该命令可以创建、重命名、列出和删除分支。

GitHub的

GitHub 是一个基于云的中央存储库,可用于托管我们的代码以进行团队协作。它是一种托管服务,用于管理中央服务器中的 git 存储库。GitHub 是一个免费(在某些限制下)且易于使用的平台,使团队成员能够在项目上协同工作。GitHub 跟踪在项目工作流中所做的更改,我们还可以恢复项目的某个状态(因为 GitHub 会保存项目的历史记录)。GitHub 支持开源开发,多个开发人员可以在开发过程中相互协作和支持。

任何人都可以在 GitHub 平台上创建一个帐户来托管他们的代码、文件和文档。GitHub 出售托管的私有代码存储库和其他协作商业模式计划,以作为一个组织赚钱。

什么是 Git Fetch?

一个开发团队正在处理一个项目。其中一位团队成员进行了一些更改,并将更改推送到中央存储库。现在,由于开发人员已在中央存储库(远程)上进行了更改,因此我们需要将这些更改获取到本地存储库,因此,使用 Git fetch 命令来执行此操作。Git fetch 命令将更改与更改的所有提交一起下载到文件中。我们使用命令 git fetch -all 来获取本地存储库所有分支中的所有更改。

要使用 git fetch 从远程存储库获取数据,我们可以使用以下命令:

git fetch <remote>

我们还可以使用 git pull 命令获取更改。要使用 git pull 从远程存储库获取数据,我们可以使用以下命令:

git pull <remote>

我们将在下一节中学习 git pull 命令。我们还将在后面的部分中学习 git fetch 与 pull。

有关更清晰的信息,请参阅下面提供的图像。

在本文后面,我们将了解 git fetch 和 git pull 命令之间的区别。

默认情况下,git fetch 命令会获取所有分支和标签(统称为 refs)。git fetch 命令还可以检索用于编译更改历史记录的所有数据。

当我们运行 git fetch 命令时,会下载通常称为 origin 的远程存储库的副本并将其保存在我们的本地存储库中。此命令不会更改代码的本地副本,但只会保存新的更改。git fetch 命令仅保存新更改,但不会像 git pull 命令那样执行合并操作。

例:

现在让我们看一下这两个命令的输出,以便更好地理解。

与 git fetch 命令关联的各种标志是:

  • --all :
    用于获取所有远程更改。
  • --append 或 -a :
    用于将获取数据的引用或对象名称附加到我们现有的 .git/FETCH_HEAD 数据中。
  • --atomic :
    它用于使用原子事务更新本地引用。
  • --depth=<depth> 
    我们可以使用此标志来限制从每个远程分支的尖端获取的提交数量。
  • --deepen=<depth> 
    我们可以使用此标志来限制从当前浅边界获取的提交数量。
  • -q 或 --quiet :
    它用于静音任何其他内部使用的 git 命令。
  • -v 或 --verbose :
    用于指定详细程度。
  • -k 或 --keep :
    用于保存下载的包。
  • -t 或 --tags :
    用于从远程存储库获取所有标签。
  • --multiple :
    用于指定多个存储库和组作为参数。

还有更多标志与 git fetch 命令一起使用来执行特定任务。要了解有关相关标志的更多信息,请参阅 git fetch 命令的官方文档。

现在让我们举一些例子,了解我们使用 git fetch 命令的各种场景。

  • 假设开发人员在中央存储库(远程)上进行了更改,那么我们需要将这些更改获取到本地存储库,因此,使用 Git fetch 命令来执行此操作。因此,我们可以使用远程存储库的 URL 和 git fetch 命令来下拉对远程存储库的更改。相同的总命令是:

    git fetch <remote-repository-URL>
  • 如果需要,我们甚至可以从特定分支获取更改。我们可以将分支的名称与分支 URL 以及 git fetch 命令一起传递。相同的总命令是:

    git fetch <branch-URL> <branch-name>
  • 在前面的命令中,我们已经了解了如何获取远程分支的更改,但我们也可以获取所有分支的更改。我们使用 -all 命令标志和 git fetch 命令来获取本地存储库所有分支中的所有更改。相同的总命令是:

    git fetch -all
  • 现在,如果开发人员在中央存储库(远程)上添加了新功能,我们需要将这些更新获取到本地存储库,因此,使用 Git fetch 命令来执行此操作。相同的总命令是:

    git fetch origin

    在上面的命令中,源代表远程存储库。

什么是 Git Pull?

git pull 命令有点类似于 git fetch 命令,但 git pull 命令将所有更改从远程存储库拉取到本地存储库的相应分支,因为我们知道 git fetch 命令首先从远程存储库获取更改,然后将更改存储在本地存储库的单独分支中。

简单来说,我们可以说 git pull 命令将更改从 GitHub 存储库获取到我们的本地存储库并合并它们。

要使用 git pull 从远程存储库获取数据,我们可以使用以下命令:

git pull <remote>

例:

git pull origin

我们甚至可以提及要从中提取数据的分支的名称。相同的总命令是:

git pull <remote> <branch-name>

现在让我们看一下这两个命令的输出,以便更好地理解。

Git Fetch 和 Git Pull 之间的主要区别

Git Fetch 和 Git Pull 之间的主要区别:

Git Fetch:

  • 将最新更改从远程存储库下载到本地远程跟踪分支。
  • 不更新本地工作目录。
  • 不会导致合并冲突。

Git 拉取:

  • 从远程存储库下载最新更改,并将其合并到 Current Branch 中。
  • 更新本地工作目录。
  • 可能会导致合并冲突。

简而言之,git fetch 是一个更安全、更灵活的选择,而 git pull 更快、更容易使用,但它可能会导致合并冲突。

Git Fetch 与 Git Pull:主要区别

我们可以使用这两个命令从远程存储库下载更改。

git fetch 命令首先从远程存储库获取更改,然后将更改存储在本地存储库的单独分支中。另一方面,git pull 命令将所有更改从远程存储库拉取到本地存储库的相应分支。简单来说,我们可以说 git pull 命令是 git fetch 和 git merge 命令的组合。

让我们在下表中查看更多差异:

注意:
git merge 命令用于将各个分支的多个提交合并到一个分支中。我们执行分支以并行开发新功能和修复错误。一旦错误被修复或添加了新功能,我们可以将这些分支合并为一个分支。

Git 获取Git 拉取
git fetch 命令从远程存储库获取更改,然后将更改存储在本地存储库的单独分支中。git pull 命令将所有更改从远程存储库拉取到本地存储库的相应分支。
git fetch 命令从远程服务器下载新更改或新数据。git pull 命令使用远程分支的最新更改更新当前分支的当前 HEAD。
git fetch 命令不会更改、操作或破坏远程存储库的数据。git pull 命令直接下载更改,然后将这些更改应用于当前工作文件。
git fetch 命令可以保护我们的代码免受可能的合并冲突的影响。git pull 命令可能会引发合并冲突。
应一次又一次地使用 git fetch 命令从中央服务器获取最新更改。如果我们已经从任何存储库中提取了更改,则不应一次又一次地使用 git pull 命令。
用作 git fetch [remote] [分支]用作 git pull [remote] [branch]
提取仅检索更改,不会合并更改。拉取检索并自动合并更改。
通过提取,可以对何时以及如何合并提取的更改进行更多手动控制。拉取是一个自动化程度更高的过程,可能无法提供那么多的控制。
获取后,您可以在决定合并之前检查获取的更改。拉取直接更新本地分支的提交历史记录。
当您想在合并之前查看更改时,更安全,从而降低意外合并的风险。速度更快,但如果不小心使用,可能会导致意外合并。

:::

了解更多信息

结论

  • 总之,git fetch 和 git pull 是必不可少的 Git 命令,它们具有不同的目的,并在管理远程存储库更改时提供不同级别的控制和安全性。
  • Git Fetch 是一种从远程存储库检索更改的谨慎方法,而 git pull 是一种更直接、更自动化的方式,可以将本地分支与远程分支同步。
  • git fetch 和 git pull 之间的选择取决于您的工作流程以及您优先考虑的控制和安全级别。
  • 当您想在合并之前查看和评估远程更改时,请使用 git fetch,当您需要更快速的更新但要谨慎以避免意外后果时,请使用 git pull。
  • 归根结底,这两个命令都是在 Git 存储库中协作和管理更改的宝贵工具,了解何时使用每个命令对于有效的版本控制至关重要。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/695520
推荐阅读
相关标签
  

闽ICP备14008679号