赞
踩
默认情况下,git fetch 命令会获取所有分支和标签(统称为 refs)。git fetch 命令还可以检索用于编译更改历史记录的所有数据。git pull 命令有点类似于 git fetch 命令,但 git pull 命令将所有更改从远程存储库拉取到本地存储库的相应分支,因为我们知道 git fetch 命令首先从远程存储库获取更改,然后将更改存储在本地存储库的单独分支中。
了解 git fetch 与 pull 的先决条件可以是对版本控制系统、分支和 Git 的基本了解。在了解 git fetch 命令和 git pull 命令及其区别之前,让我们简要讨论一下它们。
版本控制系统是软件开发中的一种工具,用于跟踪有关某个代码库(或项目)等的代码、文档和其他重要信息的变化。
有两种类型的版本控制系统:
Git 是一个版本控制系统,用于跟踪有关某个代码库(或项目)等的代码、文档和其他重要信息的更改。Git 是免费的,也是使用最广泛的版本控制系统之一。我们可以通过命令行以及其图形用户界面 (GUI) 使用 Git。Git 的命令行或终端版本称为 Git Bash,而 Git 的 GUI 版本称为 Git GUI。
Git 跟踪项目中的更改并保存称为提交的特定状态。提交是文件当前版本的快照。因此,我们跟踪这些提交,并根据需要恢复到某个提交。
分支是一个独立的开发线,用于添加某些功能和修复错误,而不会妨碍主项目。因此,我们可以并行开发新功能,当开发完成后,我们可以将功能添加回主项目。默认情况下,所有 GitHub 存储库都有可用于生产的 master 分支。
因此,新分支是为修复错误和添加新功能而创建的 master 分支的副本。修复 bug 或添加新功能后,我们可以将分支合并到 master 分支中。git branch 命令使我们能够执行并行开发。该命令可以创建、重命名、列出和删除分支。
GitHub 是一个基于云的中央存储库,可用于托管我们的代码以进行团队协作。它是一种托管服务,用于管理中央服务器中的 git 存储库。GitHub 是一个免费(在某些限制下)且易于使用的平台,使团队成员能够在项目上协同工作。GitHub 跟踪在项目工作流中所做的更改,我们还可以恢复项目的某个状态(因为 GitHub 会保存项目的历史记录)。GitHub 支持开源开发,多个开发人员可以在开发过程中相互协作和支持。
任何人都可以在 GitHub 平台上创建一个帐户来托管他们的代码、文件和文档。GitHub 出售托管的私有代码存储库和其他协作商业模式计划,以作为一个组织赚钱。
一个开发团队正在处理一个项目。其中一位团队成员进行了一些更改,并将更改推送到中央存储库。现在,由于开发人员已在中央存储库(远程)上进行了更改,因此我们需要将这些更改获取到本地存储库,因此,使用 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 命令关联的各种标志是:
还有更多标志与 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 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 拉取:
简而言之,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 存储库中协作和管理更改的宝贵工具,了解何时使用每个命令对于有效的版本控制至关重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。