网站搜索

Git Fetch:大师班


简介: git fetch 命令类似于 git pull 命令,它使用信息更新您的本地存储库并从远程存储库提交,而不会覆盖您的工作文件。

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 fetch origin

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

git fetch

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

一旦你使用了 fetch 命令,你可以看到远程分支的完整列表,通过使用分支命令的 -r(远程)选项。

git branch -r

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

查看所有提取的标签

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

git tag

先做试运行

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

git fetch --dry-run

如何获取单个分支

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

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

git fetch origin mary-feature

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

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

获取所有分支

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

git fetch --all

比较本地和远程分支

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

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

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

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

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

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

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

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

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

git checkout mary-feature

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

git pull
git status

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

git checkout mary-feature

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

git checkout mary-feature

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

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

git merge origin/mary-feature

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

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

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

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

训练有素的小狗

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