如果没有合并,git fetch的常见用途是什么?

时间:2017-11-23 07:28:48

标签: git

问题也可能是"为什么在git pull存在时使用git fetch?"。

执行git fetch的原因可能是您希望在运行git merge之前查看fetch命令的日志以了解您要合并的内容。

git fetch然后git merge是经典的工作流程,在git fetch之后你还有其他常见的东西吗?如果你没有运行这个,你就无法做到命令之前?

2 个答案:

答案 0 :(得分:5)

git fetch命令用于将部分历史记录从其他命令中提取 重新存储到您当地的。

所以,这是该命令本身的唯一用途;它实际上并不关心 关于你可以用这段历史做些什么,以及融合那段历史 实际上,可以说是最常见的用途,你可以做其他事情。

例如,我经常查看获取的历史记录(通常是a 由git fetch更新的远程分支,用于构建旧版本。

您还可以仅执行历史挖掘操作,例如差异 并运行git log

你也可以选择感兴趣的提交。

您可以在获取的历史记录行上运行git filter-branch 并且git push它可以立即在任何地方合并。

<强> TL; DR

不要在心理上将git fetch与任何东西联系起来:它只是取而代之 数据;无论你用那些数据做什么都完全取决于你。

答案 1 :(得分:3)

git fetch获取一些本地不存在的引用及其相关对象,以便我们可以操作这些引用和对象。默认情况下,我们无法在没有任何引用的情况下获取单个提交。但是我们可以,如果远程存储库允许它使用一些配置。

除了git mergegit rebase之外,还有一些案例:

a)您想重用提交abc123的提交消息,但您还没有提交。可以从另一个远程存储库的分支master访问提交。

git add .
git fetch <url_of_another_repository> master
git commit -c abc123 --reset-author

b)你想快速浏览一下,看看你在弄乱后在本地做了什么新的提交。

git fetch origin master
git cherry FETCH_HEAD HEAD

c)您希望将另一个远程存储库的master的提交应用到您的本地分支。

git fetch <url_of_another_repository> master
git cherry-pick abc123

d)您的同事已提交参考refs/reviews/333,并要求您进行审核,但您没有网络服务可以在线进行。所以你拿它并检查它。

git fetch origin refs/reviews/333
git checkout FETCH_HEAD