两者之间有什么区别?git pullgit fetch?


当前回答

git pull = git fetch + git merge 

其他回答

我们简单地说:

git pull == git fetch + git merge

如果你逃跑git pull中,您不需要将数据合并到本地数据。如果运行git fetch这意味着你必须跑git merge获取本地机器的最新代码。 否则, 本地机器代码不会在不合并的情况下被更改 。

所以在 Git Gui 中, 当您获取时, 您必须合并数据 。 获取本身不会在本地修改代码 。 您可以检查当您通过一次获取并查看来更新代码时, 是否更新了代码; 代码不会改变 。 然后您将合并... 您将会看到修改后的代码 。

最简单的说,git pull是否为 a 的git fetch续 续 agit merge.


git fetch更新您的远程跟踪分支refs/remotes/<remote>/。此操作可以随时安全运行,因为它不会改变您在refs/heads.

git pull本地分支提供其远程版本的最新信息,同时更新其他远程跟踪分支。

调自 Git 文档git pull:

git pull运行中git fetch使用给定参数,然后取决于配置选项或命令行的旗帜,将调用其中之一git rebasegit merge以便各处之间互相调和。


有必要记住,在任何特定机器的Git存储库工作时,存储库载有来自所有远程的所有分支的复制件,以及每个地方分支的复制件,你已经做了一些工作。

你可以看到这个使用git branch -a显示您所在的分支机构,包括master和所有遥控器的分支。

master
feature/my-feature-branch
remotes/origin/master
remotes/origin/my-feature-branch
remotes/another-remote-machine/master
remotes/another-remote-machine/my-feature-branch

上面我已指出 遥控遥控器的存在origin以另一个名称返回和另一个远程another-remote-machine.

注意 您不必在所有仓库中拥有每个分支的复制件 。 (remotes 和 local.) 它取决于您通过运行同步 。git pull, git push, git fetch,来自不同的机器 / 仓库 所涉及的。

您可以从远程仓库获取, 查看差异, 然后拉动或合并 。

这是被称作远程仓库的示例origin和支派,和支派,master跟踪远程分支origin/master:

git checkout master                                                  
git fetch                                        
git diff origin/master
git rebase origin master

enter image description here

这种互动图形表达方式非常有助于降低基点:http://ndpsoftware.com/git-cheatsheet.html

git fetch仅“ 下载” 从远程到本地仓库的更改 。git pull下载修改并将其合并到当前分支中。“在默认模式中,git pull简称为git fetch和继 继 继 继 继 继git merge FETCH_HEAD."

和差异之间的差别GIT 抓取GIT 调可用下列假设情况解释:(记住图片比文字更响亮!

让我们举一个例子来说明您正在与团队成员一起开展一个项目。 因此,该项目将有一个主要分支, 所有贡献者都必须将该项目推到他们自己的本地仓库, 然后在这个本地分支上修改/ 添加模块, 然后推回主分支 。

那么,初次初次国家当您在本地存储库中将主项目 提前启动时, 两支分支中的两支分支将变成这样( ) 。 ( ) @ info: whatsthisA, BC是项目已完成的模块)

enter image description here

现在,你已经开始研究新模块(假设)D),当你们完成D您想要将模块推到主分支中, 但是同时发生的情况是, 您的队友之一开发了新模块E, F修改和修改C.
所以现在发生的事情是 您的本地存储库 缺乏项目最初进展的背后 从而推动您对主要分支的更改 可能导致冲突 并可能导致您的模块D发生故障。

enter image description here

为了避免此类问题,并与项目的最初进展平行工作,有两种方式:

1. Git Fetch-(吉特接驳-)这将下载所有对本地分支中不存在的源/主分支工程所做的更改。 并将等待 Git 合并命令应用您仓库或分支的更改 。

enter image description here

现在您可以仔细监视文件, 然后将其合并到仓库。 您也可以修改D因修改而需要时C.

enter image description here

2. Git Pull-(吉特拉拉) - (吉特拉拉)这将更新您的本地分支, 使用源/ 主分支, 即它实际上所做的是 Git Fetch 和 Git 的组合 。但这可能引发冲突, 因此建议使用Git Pull,

enter image description here