当前回答
git fetch
从远程服务器将代码从远程服务器撤回到本地仓库的跟踪分支。如果您的远程服务器被命名origin
然后,这些分支将居其中;origin/
,例如,origin/master
, origin/mybranch-123
等等。这些不是你们的现树枝,而是你们的现树枝。当地当地服务器上那些分支的复制件
git pull
是否为 a 的git fetch
但当时并且,还有将跟踪分支的代码合并到您当前本地版本的该分支中。如果您尚未准备好进行该修改,只需git fetch
头一次。
其他回答
简单解释:
git fetch
获取元数据。 如果您想要检查最近创建的分支, 您可能需要在退出前进行获取 。
git pull
从远程获取元元数据,并将文件从远程移动并合并到分支
我也为此挣扎过。事实上,我来到这里时,用谷歌搜索了完全相同的问题。阅读了所有这些答案,终于在我脑海中画出了一张图片,我决定试着从下面看2个储存库和1个沙箱的状况,以及一段时间以来在看它们的版本时所采取的行动。这就是我所想出来的。如果我在任何地方搞砸了,请纠正我。
三个邮箱有一个接听器:
--------------------- ----------------------- -----------------------
- Remote Repo - - Remote Repo - - Remote Repo -
- - - gets pushed - - -
- @ R01 - - @ R02 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Repo - - Local Repo - - Local Repo -
- pull - - - - fetch -
- @ R01 - - @ R01 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Sandbox - - Local Sandbox - - Local Sandbox -
- Checkout - - new work done - - -
- @ R01 - - @ R01+ - - @R01+ -
--------------------- ----------------------- -----------------------
三号邮局拉一拉一拉
--------------------- ----------------------- -----------------------
- Remote Repo - - Remote Repo - - Remote Repo -
- - - gets pushed - - -
- @ R01 - - @ R02 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Repo - - Local Repo - - Local Repo -
- pull - - - - pull -
- @ R01 - - @ R01 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Sandbox - - Local Sandbox - - Local Sandbox -
- Checkout - - new work done - - merged with R02 -
- @ R01 - - @ R01+ - - @R02+ -
--------------------- ----------------------- -----------------------
这帮助我理解了为什么买东西很重要。
Git允许在较新的承诺之后适用按时间顺序排列的旧承诺。 因此,存放库之间转移承诺的行为分为两步:
正在从远程分支复制新承诺, 复制本地副本中的此远程分支 。
(收回业务)
master@remote >> remote/origin/master@local
整合对地方分支机构的新承诺
(内购外业务)
remote/origin/master@local >> master@local
第二步有两种方法,你可以:
- 在上一个共同祖先之后,将本地分支叉到叉口,并添加与本地仓库独特的承诺平行的新承诺,通过合并承诺最终完成,关闭叉口。
- 在上一个共同祖先后插入新承诺,并重新应用本地仓库独有的承诺。
内git
术语术语,第1步是git fetch
,第2步是git merge
或git rebase
git pull
是git fetch
和git merge
更简短
git fetch
获取更新但不将其合并 。
git pull
是否为 a 的git fetch
兜帽下,然后一个merge
.
简简
git fetch
类似pull
但它不合并。 也就是说, 它会获取远程更新( NAME OF TRANSLATORS) 。refs
和objects
)但您的居住地保持不变(即:origin/master
得到更新,但master
保留原样) 。 。
git pull
从一个远程的并瞬间合并中拉下来。
更多
git clone
克隆回购 。
git rebase
将不属于上游分支的当前分支保存到临时区域。 您的分支现在和您开始更改前一样。 所以,git pull -rebase
将拉下远程修改, 倒转您的本地分支, 重放您的变化 在您当前分支的顶部 一个一个一个地重放 直到您更新。
还有git branch -a
将显示你们所有分支—— 本地和远程分支—— 究竟发生了什么。
这个博客文章很有用:
Git 拉拉、 Git 抓取和 Git 克隆( 和 Git 重新基底) - Mike Pearce 的区别
和涵盖范围git pull
, git fetch
, git clone
和git rebase
.
最新更新
我想我应该更新这个 来显示你是如何实际使用这个的。
从远程更新您的本地副本( 但不要合并) :
git fetch
下载更新后,
git diff master origin/master
如果你对最新消息满意的话, 合并一下:
git pull
注:
第2步:更多关于本地和远程之间差异的信息,见:如何比较本地 Git 分支与其远程分支的比较
第三步:也许更准确(例如,在快速变化的回购上)git rebase origin
此处。 见@ Justin Ohms 评论在另一个答案中。
另见:http://longair.net/blog/2009/04/16/git-fetch-and-merge/
注:我还提到merge
a 期间pull
然而,您仍然可以配置pull
使用rebase
取而代之。
git 拉
它使用单一命令执行两个函数。
它会获取对远程分支的所有修改, 然后将这些修改合并到您的本地分支中。 您也可以通过 -- rebase 来修改拉动行为。 合并和重基准的区别可以读取在这里
git 获取 git 获取
Git 抓取仅能完成 Git pull 的一半工作。 它只是将远程更改带入您的本地回购, 但没有将其应用到分支中 。 您必须明确应用这些更改 。 这可以做如下操作 :
git fetch
git rebase origin/master
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别