Git pull 和 Git fick 之间有什么区别?
当前回答
git 拉
它使用单一命令执行两个函数。
它会获取对远程分支的所有修改, 然后将这些修改合并到您的本地分支中。 您也可以通过 -- rebase 来修改拉动行为。 合并和重基准的区别可以在这里读取
git 获取 git 获取
Git 抓取仅能完成 Git pull 的一半工作。 它只是将远程更改带入您的本地回购, 但没有将其应用到分支中 。 您必须明确应用这些更改 。 这可以做如下操作 :
git fetch
git rebase origin/master
其他回答
更简短
git 获取获取更新, 但不会合并 。
git pull 会在引擎盖下抓一个小东西 然后合并
简简
git 抓取类似拉动, 但不合并 。 也就是说, 它会获取远程更新( 参考和对象) , 但您所在的本地保持相同( 即源/ 主机得到更新, 但主机保持相同 ) 。
Git拉拉从一个遥控器拉下来, 并立即合并。
更多
git 克隆克隆克隆 复制 。
git rebase 将不属于上游分支的当前分支保存为临时区域。 您的分支现在和您开始修改之前一样。 因此, git pull - rebase 将拉下远程修改, 倒带您的本地分支, 将您的变化一一重放到您当前分支的顶部, 直到您更新 。
并且,Git 分支 -a 将展示你所有分支的准确情况, 本地和远程。
这个博客文章很有用:
Git 拉拉、 Git 抓取和 Git 克隆( 和 Git 重新基底) - Mike Pearce 的区别
并覆盖 Git 拉, git 抓取, git 克隆和 Git 重新基底。
最新更新
我想我应该更新这个 来显示你是如何实际使用这个的。
从远程更新您的本地副本( 但不要合并 ) : git flick 在下载更新后, 让我们来看看差异: git diff 主源/ master 如果您对这些更新满意, 那么合并: git pull
注:
第2步:更多关于本地和远程之间的 diffs , 见: 如何比较本地 Git 分支与远程分支 。
第3步:也许更准确(例如快速变化的回邮)是在这里进行基底重置。见 @Justin Ohms在另一个答案中的评论。
另见:http://logair.net/blog/2009/04/16/git-fetch-and-merge/
注意: 我在拉动时提到过合并, 但是您可以配置拉动来使用重设 。
git pull = = (获取 Git + git 合并)
git refick 不改变本地分支 。
如果您已经拥有一个本地仓库, 并且为所要的工程设置了远程设置, 您可以使用 git 抓取 。 ... Fetch 不改变本地分支 。 因此您需要将远程分支与本地分支合并, 以便从 Github 中引入新获取的更改 。
回报 :
谈到上述答案中的拉动和取回,我想分享一个有趣的把戏,
git Pull -- rebase
以上命令是我生命中最有用的命令 挽救了很多时间
在将您的新承诺推进到服务器之前, 请尝试此命令, 它会自动同步最新的服务器更改( 加上一个抓取 + 合并) , 并将您的承诺放在 Git 日志的顶部 。 无需担心手动拉动/ 合并 。
详情见:http://gitolite.com/git-pull-rebase
调
这种交互式图形表达方式非常有助于低估数据:http://ndpsoftware.com/git-cheatesheet.html。
git 获取从远程到本地仓库的更改时只“ 下載 ” 。 git 下载这些更改并将其合并到当前的分支中。 “ 在默认模式中, git 拖动是 Git 获取的简称, 然后是 Git 合并 FETCH_HEAD 。 ”
我也为此挣扎过。事实上,我来到这里时,用谷歌搜索了完全相同的问题。阅读了所有这些答案,终于在我脑海中画出了一张图片,我决定试着从下面看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+ -
--------------------- ----------------------- -----------------------
这帮助我理解了为什么买东西很重要。
推荐文章
- “node_modules”文件夹应该包含在git存储库中吗
- 为什么git-rebase给了我合并冲突,而我所做的只是压缩提交?
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 为什么要把Gradle Wrapper提交给VCS?