当前位置:   article > 正文

Git拉取请求:Git Fetch

git fetch

概述

假设开发人员在中央存储库(远程)上进行了更改,那么我们需要将这些更改提取到本地存储库,因此使用 Git fetch 命令来执行此操作。Git fetch 命令将更改以及所有更改提交下载到文件中。我们使用命令git fetch -all来获取本地存储库所有分支中的所有更改。git fetch 命令默认获取所有分支和标签(统称为refs )。git fetch命令还可以检索用于编译更改历史记录的所有数据。

先决条件

学习 git fetch 的先决条件是对版本控制系统、分支和 Git 有基本的了解。在学习 git fetch 命令之前,让我们先简单讨论一下它们。

版本控制系统

版本控制系统是软件开发中的一种工具,用于跟踪代码、文档以及有关某个代码库(或项目)的其他重要信息等的更改。版本控制系统有两种类型: 集中式版本控制系统( CVCS)和分布式版本控制系统(DVCS)。

git

Git 是一个版本控制系统,用于跟踪代码、文档以及有关某个代码库(或项目)等的其他重要信息的更改。Git 是免费的,也是使用最广泛的版本控制系统之一。我们可以通过命令行以及图形用户界面 ( GUI ) 使用 Git。Git 的命令行或终端版本称为Git Bash,而 Git 的 GUI 版本称为Git GUI。Git 跟踪项目中的更改并保存称为提交的特定状态。提交是文件当前版本的快照。因此,我们跟踪这些提交,并且如果需要的话可以恢复到某个提交。

分枝

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

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

GitHub

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

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

Git 抓取简介

在了解 git fetch 命令之前,让我们看一个场景。

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

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

git fetch <remote>

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

git pull <remote>

请参阅下面提供的图片以获得更清晰的信息。

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

我们也可以使用 git clone 命令来实现同样的目的。那么 git clone 到底是什么?如果我们想克隆其他开发人员的工作(以中央存储库的形式存储),那么我们可以使用示例命令 gitclonerepository将整个存储库复制到我们的本地系统中。假设我们开发了一个项目,并将该项目托管在远程存储库(服务器)上,并且由于某些问题,本地系统上的数据被删除。然后我们可以轻松克隆我们自己的存储库,这样我们的数据将始终存储在安全的地方,并且不会受到本地系统任何丢失的影响。

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

git clone <remote>

Git 获取命令如何工作?

现在让我们了解git fetch命令是如何工作的。

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

示例:现在让我们看看这两个命令的输出以便更好地理解。

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

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

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

还有更多标志与git fetch命令一起使用来执行特定任务。要了解有关相关标志的更多信息,请参阅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

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

Git Fetch 与 Git Pull

我们知道,Git fetch 命令将更改以及所有更改的提交下载到文件中。git pull 命令将更改从 GitHub 存储库提取到我们的本地存储库并合并它们,另一方面,git push 命令仅将我们的提交历史记录从本地存储库发送到 GitHub(中央存储库)。

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

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

git fetch 和 git pull命令非常相似,这两个命令都可以用来获取本地存储库的更改。让我们了解一下git fetch命令和git pull命令之间的区别。

git pullgit fetch
git pull命令将所有更改从远程存储库拉取到本地存储库的相应分支。git fetch命令从远程存储库中获取更改,然后将更改存储在本地存储库的单独分支中。
git pull命令用远程分支的最新更改更新当前分支的当前 HEAD。git fetch命令从远程服务器下载新的更改或新数据。
git pull命令直接下载更改,然后将这些更改应用到当前工作文件。git fetch命令不会更改、操作或破坏远程存储库的数据。
git pull命令可能会引发合并冲突。git fetch命令可以保护我们的代码免受可能的合并冲突的影响。
如果我们已经从任何存储库中提取了更改,则不应再次使用git pull命令。应反复使用git fetch命令从中央服务器获取最新更改。

结论

  • Git 是一个版本控制系统,用于跟踪代码、文档以及有关某个代码库的其他重要信息等的更改。
  • 假设开发人员在中央存储库(远程)上进行了更改,那么我们需要将这些更改提取到本地存储库,因此使用 Git fetch 命令来执行此操作。
  • 当我们运行git fetch命令时,通常称为origin 的远程存储库的副本将被下载并保存在我们的本地存储库中。
  • Git fetch 命令将更改以及所有更改提交下载到文件中。我们使用命令git fetch -all来获取本地存储库所有分支中的所有更改。
  • git fetch 命令默认获取所有分支和标签(统称为refs )。git fetch命令还可以检索用于编译更改历史记录的所有数据。
  • git fetch命令仅保存新的更改,但 doe snot 与git pull命令一样执行合并操作。
  • git fetch和git pull命令非常相似,这两个命令都可以用来获取本地存储库的更改。
  • git fetch命令首先从远程存储库中获取更改,然后将更改存储在本地存储库的单独分支中。
  • git pull命令将所有更改从远程存储库拉取到本地存储库的相应分支。
  • 应反复使用git fetch命令从中央服务器获取最新更改。git fetch命令还可以保护我们的代码免受可能的合并冲突的影响。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号