Git Fetch:大师班
已发表: 2023-02-26 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 获取
这会从“原始”存储库中检索任何更新,但不会将更改合并到工作文件中。 我们可以看到已经为我们检索了一个名为“new-branch”的新分支。
使用fetch
命令后,您可以通过将-r
(远程)选项与 branch 命令一起使用来查看远程分支的完整列表。
git 分支 -r
这列出了远程知道的所有分支,在fetch
之后,它们也在您的本地存储库中。
查看所有提取的标签
同样,您可以使用tag
选项(注意,它是不带“s”的“标签”)来查看标签列表。
混帐标签
相关:如何切换、添加和删除 Git 遥控器
先做试运行
尽管git fetch
不会将更改合并到您的工作文件中,但它仍会更新您的本地存储库。 如果您想查看fetch
命令将执行哪些更改,而不实际进行更改,请使用--dry-run
选项。
git fetch --dry-run
如何获取单个分支
获取有关单个分支的信息很容易。 将分支的名称添加到命令行以告诉fetch
你只需要知道那个分支。
在这里,我们告诉fetch
从远程存储库“origin”检索分支“mary-feature”。
git fetch origin 玛丽特征
现在远程分支的详细信息和内容都在您的本地存储库中,您可以使用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
如果分支包含大量更改,则单行显示很有用。 要查看更多信息,请省略--oneline
选项。
git log mary-feature..origin/mary-feature
这向我们显示了每次提交的时间和日期,以及提交消息和更改作者的详细联系信息。
将本地分支与远程分支同步
如果您决定要继续并将更改从远程分支合并到本地工作文件,则可以使用这些命令。
我们将检查分支以确保我们正在工作它是我们当前的工作分支..
git checkout 玛丽功能
该分支已为我们签出,我们被告知它落后于远程版本。 我们可以使用git pull
来更新它,然后使用git status
检查我们的状态。
混帐拉
混帐状态
如果我们对本地文件进行了一些更改,Git 会在我们检出分支时通知我们需要执行git pull
才能开始合并。
git checkout 玛丽功能
一个简单的git pull
启动检索文件和合并的过程,或者我们可以直接使用git merge
本身。 我们首先要确保我们使用的是正确的分支
git checkout 玛丽功能
我们将告诉git
将我们当前的分支与远程存储库中的分支合并,有六个不同的提交需要解决。
我们需要告诉 Git 我们要合并哪个远程分支。
git 合并 origin/mary-feature
编辑器打开,允许我们提供提交消息。 我们可以接受建议的消息,或添加我们自己的消息。 该编辑器是您的默认编辑器,除非 Git 已配置为使用不同的编辑器。
准备好继续时保存更改。 当编辑器关闭时,合并会自动进行。
我们的合并是成功的,因为没有冲突。
当两个或多个开发人员更改相同的代码行时,就会出现冲突。 如果是这种情况,Git 会在受影响的文件中标记冲突。 您需要依次查看它们并选择要保留的更改。
训练有素的小狗
就像训练中的小狗一样, fetch
会取回你要的东西,但不会丢掉它。 如果你真的想要小狗给你看的东西,你需要pull
。
相关: Git rebase:你需要知道的一切