Git pull 和 Git fick 之间有什么区别?


当前回答

git 抓取时会检索远程分支, 这样您就可以将 diff 和当前分支合并。 git 抓取时会在当前分支跟踪的远程条纹上抓取, 然后合并结果 。 您可以使用 git 抓取时查看远程分支是否有更新, 而不必将其与您的本地分支合并 。

其他回答

更简短

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 的性质。 您有远程和本地分支( 不一定相同 ) 。 与其他源控制系统相比, 这可能会有点令人困惑 。

通常当您检出远程时,会创建本地副本,跟踪远程。

gitreach 将会与远程分支合作并更新您的信息 。

实际上,如果其他SWES同一个部门工作,就属于这种情况,而小型项目----一个部门----一个项目设想方案的情况很少。

您对本地分支的工作仍然完好无损 。 为了将更改带回您的本地分支, 您必须合并/ 重订远程分支的更改 。

git拉动正好就是这两个步骤(即 -- -- rebase to rebase rebase 而不是合并)

如果您的本地历史和远程历史有冲突, 您将被迫在一小块按键发布您的更改时进行合并 。

因此,这真正取决于你的工作环境的性质和使用经验。

Git pull 和 Git fick 之间唯一的区别是:

git 拉从远程分支拉拉并合并。

git 只从远程分支获取从远程分支获取的抓取, 但不会合并

i. e. git pull = git 获取 + git 合并...

OK,这里有一些关于 Git pull 和 Git fick 的信息, 以便您能够理解实际差异... 几个简单的字, 获取最新数据, 但代码不会修改, 并且不会与您当前的本地分支代码发生混乱, 但是拉动代码修改, 并合并您的本地分支, 阅读以获得更多关于每个代码的细节 :

git 获取 git 获取

它会下载所有参考文献和对象 以及任何新的分支 到您的本地仓库...

从一个或多个其他仓库获取分支和(或)标记( 统称“ refs” ) , 以及完成历史所需的对象 。 远程跟踪分支会更新( 见下文关于控制此行为的方法的描述 ) 。 默认情况下, 任何指向所获取历史的标记也会被获取; 效果是从您感兴趣的分支获取标记。 这种默认行为可以通过使用 -- tags 或 -- no- tags 选项或配置远程来改变 。 tagOpt 。 通过使用直截取标记的重新检查, 您可以获取不指向您感兴趣的分支的标记 。 git 抓取标记可以一次从一个命名的仓库或 URL 中获取, 或从多个仓库中获取标记, 如果给定了, 并且有远程 。 配置文件中的条目。 (见 git- configg ) 。 当没有指定远程的遥控时, 除非为当前分支配置了上游分支。 正在获取的 ref 名称, 连同对象名称一起被您感兴趣的分支, 或脚本指令 可能被写入。


git 拉

它将应用本地从远程到当前分支的更改...

包含从远程仓库到当前分支的更改。 在默认模式下, git pull 是 Git 抓取的短手, 之后是 git 合并 FETCH_HEAD 。 更准确地说, git pull 以给定参数抓取 git 和调用 git 合并将回收的分支头合并到当前分支。 有了 -- rebase, 它会运行 git 重新基准而不是 git 合并 。 应该是被传送到 git- fetch1 的远程仓库的名称 。 它可以指定任意的远程 ref( 例如标签名称) , 或甚至收藏含有相应远程跟踪分支的refs/: heads/: refs/ remotes/genter/) , 但它通常是远程仓库中分支的名称 。 默认值, 由 git- branch 设定的当前分支的“ remote” 和“ merge” 配置, 从中读取 。


我还创建了下面的视觉图 来展示你们如何拼凑和拼凑在一起...

git pull 尝试在获取承诺后自动合并 。 这是上下文敏感, 所以所有被拉过的承诺都将合并到您当前活动的分支中 。 git pull 自动合并承诺而不让您首先审查它们。 如果您不小心管理您的分支, 您可能会遇到经常的冲突 。 git 获取从目标分支中收集当前分支中不存在的任何承诺, 并将其存储在您的本地仓库中 。 但是, 它不会与当前分支合并 。 如果您需要更新您的仓库, 这特别有用 。 如果您需要更新文件, 但它正在处理一些可能中断的任务 。 要将承诺整合到当前的分支中, 您以后必须使用 Git 合并 。