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


当前回答

此图形可能有用 。 git pull 基本上等于 Git 获取然后 git 合并

其他回答

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

回报 :

谈到上述答案中的拉动和取回,我想分享一个有趣的把戏,

git Pull -- rebase

以上命令是我生命中最有用的命令 挽救了很多时间

在将您的新承诺推进到服务器之前, 请尝试此命令, 它会自动同步最新的服务器更改( 加上一个抓取 + 合并) , 并将您的承诺放在 Git 日志的顶部 。 无需担心手动拉动/ 合并 。

详情见:http://gitolite.com/git-pull-rebase

实际上 Git 保有一份您自己的代码副本和远程仓库 。

命令 git 抓取时通过从远程仓库获取数据更新本地副本。 我们需要这个数据的原因是, 其他人可能对代码做了一些修改, 您想要不断更新自己 。

命令 Git 拖动将远程仓库的更改带到您保存您自己的代码的位置。 通常, git 拖动这样做的方式是先做一个“ git 抓取” , 将远程仓库的本地副本更新为最新版本, 然后将修改合并到您自己的代码仓库, 并有可能将您的工作副本合并到您自己的代码仓库中 。

Git 获取

帮助您从 Git 仓库获取最新更新信息 。 假设您在一个使用 GitFlow 的团队中工作, 该团队在多个分支( 功能) 上工作 。 有了 Git 抓取 -- 所有的指令, 您都可以了解仓库中所有新的分支 。

多数情况下, git 抓取程序都与 git 重置一起使用。 例如, 您想要将全部本地更改恢复到当前仓库状态 。

git fetch --all // get known about latest updates
git reset --hard origin/[branch] // revert to current branch state

Git 拉着

此命令以当前仓库分支状态更新您的分支处 。 让我们继续使用 GitFlow 。 多个特性分支已被合并来开发分支, 当您想要为项目开发新特性时, 您必须前往开发分支处, 并做一个 Git pull 以获取当前开发分支的状态

GitFlow 的文件 https://gist.github.com/peterdeweese/4251497

人们必须牢记 git 的性质。 您有远程和本地分支( 不一定相同 ) 。 与其他源控制系统相比, 这可能会有点令人困惑 。

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

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

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

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

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

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

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