问题也可能是"为什么在git pull存在时使用git fetch?"。
执行git fetch
的原因可能是您希望在运行git merge
之前查看fetch命令的日志以了解您要合并的内容。
git fetch
然后git merge
是经典的工作流程,在git fetch
之后你还有其他常见的东西吗?如果你没有运行这个,你就无法做到命令之前?
答案 0 :(得分:5)
git fetch
命令用于将部分历史记录从其他命令中提取
重新存储到您当地的。
所以,这是该命令本身的唯一用途;它实际上并不关心 关于你可以用这段历史做些什么,以及融合那段历史 实际上,可以说是最常见的用途,你可以做其他事情。
例如,我经常查看获取的历史记录(通常是a
由git fetch
更新的远程分支,用于构建旧版本。
您还可以仅执行历史挖掘操作,例如差异
并运行git log
。
你也可以选择感兴趣的提交。
您可以在获取的历史记录行上运行git filter-branch
并且git push
它可以立即在任何地方合并。
<强> TL; DR 强>
不要在心理上将git fetch
与任何东西联系起来:它只是取而代之
数据;无论你用那些数据做什么都完全取决于你。
答案 1 :(得分:3)
git fetch
获取一些本地不存在的引用及其相关对象,以便我们可以操作这些引用和对象。默认情况下,我们无法在没有任何引用的情况下获取单个提交。但是我们可以,如果远程存储库允许它使用一些配置。
除了git merge
和git 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