Git Fetch:大师班

已发表: 2023-02-26
Linux 笔记本电脑显示终端窗口,背景为地球图案和二进制水印
fatmawati achmad zaenuri/Shutterstock.com
git fetch 命令类似于 git pull 命令,它使用信息更新本地存储库并从远程存储库提交,而不会覆盖您的工作文件。

Git fetch命令让您三思而后行。 您可以发现对远程存储库进行了哪些更改,但不会用远程文件覆盖本地文件。

目录

什么是 git fetch,它有什么作用?
Git 获取与拉取
使用 git fetch 同步本地和远程存储库
查看所有提取的标签
先做试运行
如何获取单个分支
获取所有分支
比较本地和远程分支
将本地分支与远程分支同步
训练有素的小狗

什么是 git fetch,它有什么作用?

Git 中的fetch命令将提交、文件和其他信息从远程存储库安全地下载到本地存储库。 当您想查看其他开发人员所做的更改而不被迫接受更改时,请使用 fetch。 您的本地文件保持不变。 为什么这很重要?

当您作为开发团队的一员工作时,您必须保持头脑清醒。 远程或中央存储库将包含其他开发人员创建并推送到远程存储库的更改和新分支。

完全有可能有人更新了您在计算机上本地修改的文件的远程副本。 如果您不经意地执行git pull来更新您的本地存储库,您可能会发现自己正在处理您可能不想要的更改的合并。

下载信息后,您可以检查它并查看更改内容。 这使您可以就现在要合并的内容(如果有的话)以及要推迟到以后合并的内容做出明智的选择。

Git 获取与拉取

git fetch命令的行为类似于git pull命令,但没有覆盖本地文件的步骤。 您的本地存储库已更新和同步,但更改不会写入本地存储库的工作状态,因此您的文件保持不变。

或者,换句话说, git pull命令就像一个git fetch紧跟着一个git merge

使用 git fetch 同步本地和远程存储库

要从远程存储库获取所有更新的元数据和提交到本地存储库,请使用带有远程存储库名称或 URL 的git fetch命令。 默认情况下,第一个远程存储库称为“源”。

 git 获取来源

如果您使用的是单个远程存储库,则可以省略“来源”一词。

 git 获取

在默认的远程仓库上使用 git fetch 命令

这会从“原始”存储库中检索任何更新,但不会将更改合并到工作文件中。 我们可以看到已经为我们检索了一个名为“new-branch”的新分支。

使用fetch命令后,您可以通过将-r (远程)选项与 branch 命令一起使用来查看远程分支的完整列表。

 git 分支 -r 

查看默认远程上存在的分支

这列出了远程知道的所有分支,在fetch之后,它们也在您的本地存储库中。

查看所有提取的标签

同样,您可以使用tag选项(注意,它是不带“s”的“标签”)来查看标签列表。

 混帐标签

使用 git tag 命令列出本地仓库中的标签

相关:如何切换、添加和删除 Git 遥控器

先做试运行

尽管git fetch不会将更改合并到您的工作文件中,但它仍会更新您的本地存储库。 如果您想查看fetch命令将执行哪些更改,而不实际进行更改,请使用--dry-run选项。

 git fetch --dry-run 

使用 --dry-run 选项查看 fetch 命令将检索的更改

如何获取单个分支

获取有关单个分支的信息很容易。 将分支的名称添加到命令行以告诉fetch你只需要知道那个分支。

在这里,我们告诉fetch从远程存储库“origin”检索分支“mary-feature”。

 git fetch origin 玛丽特征

使用 git fetch 获取单个远程分支

现在远程分支的详细信息和内容都在您的本地存储库中,您可以使用git checkout命令创建一个新分支并检出远程分支。 如果这是您第一次使用此分支,这不会覆盖任何现有文件。

 git checkout -b mary-feature origin/mary-feature 

安全地将检索到的远程分支签出到新的本地分支

获取所有分支

如果您使用多个遥控器,您可以通过使用--all选项将所有分支的所有更改拉回本地存储库来节省时间。

 git fetch --all

比较本地和远程分支

要查看远程分支中的文件与本地副本有何不同,请使用git fetch ,然后使用git log命令。

请注意,本地和远程分支有两个句点“ .. ”将它们分开。 --oneline选项显示提交标识符和提交消息。

 git 获取
git log --oneline mary-feature..origin/mary-feature 

使用 git 获取远程更改并使用 git log 显示更改

如果分支包含大量更改,则单行显示很有用。 要查看更多信息,请省略--oneline选项。

 git log mary-feature..origin/mary-feature 

省略 --oneline 选项,以便 git 显示每个提交的更多详细信息

这向我们显示了每次提交的时间和日期,以及提交消息和更改作者的详细联系信息。

将本地分支与远程分支同步

如果您决定要继续并将更改从远程分支合并到本地工作文件,则可以使用这些命令。

我们将检查分支以确保我们正在工作它是我们当前的工作分支..

 git checkout 玛丽功能

检查一个分支

该分支已为我们签出,我们被告知它落后于远程版本。 我们可以使用git pull来更新它,然后使用git status检查我们的状态。

 混帐拉
混帐状态

从 rmeote 仓库拉取修改到本地

如果我们对本地文件进行了一些更改,Git 会在我们检出分支时通知我们需要执行git pull才能开始合并。

 git checkout 玛丽功能

Git通知我们本地和远程brnahces已经分叉,需要合并

一个简单的git pull启动检索文件和合并的过程,或者我们可以直接使用git merge本身。 我们首先要确保我们使用的是正确的分支

git checkout 玛丽功能

Git通知我们本地和远程brnahces已经分叉,需要合并

我们将告诉git将我们当前的分支与远程存储库中的分支合并,有六个不同的提交需要解决。

合并成功的消息

我们需要告诉 Git 我们要合并哪个远程分支。

 git 合并 origin/mary-feature 

使用 git merge 将远程分支合并到本地分支

编辑器打开,允许我们提供提交消息。 我们可以接受建议的消息,或添加我们自己的消息。 该编辑器是您的默认编辑器,除非 Git 已配置为使用不同的编辑器。

编辑提交信息

准备好继续时保存更改。 当编辑器关闭时,合并会自动进行。

我们的合并是成功的,因为没有冲突。

合并成功的消息

当两个或多个开发人员更改相同的代码行时,就会出现冲突。 如果是这种情况,Git 会在受影响的文件中标记冲突。 您需要依次查看它们并选择要保留的更改。

训练有素的小狗

就像训练中的小狗一样, fetch会取回你要的东西,但不会丢掉它。 如果你真的想要小狗给你看的东西,你需要pull

相关: Git rebase:你需要知道的一切