当前回答
git pull
获取承诺后尝试自动合并 。上下文敏感,因此所有被拉动的承诺都将合并为您目前活跃的分支。git pull
自动合并承诺未经审查,而不先审查。。如果你不仔细管理自己的分支,你可能会遇到频繁的冲突。git fetch
收集当前分支中不存在的目标分支的任何承诺,并将其存储在本地仓库中然而,它不会与您当前分支合并。如果您需要不断更新您的仓库,但正在研究一些更新文件时可能中断的文件。要将承诺整合到当前分支中,您必须使用git merge
之后。
其他回答
git fetch
将检索远程分支,以便您能够git diff
或git merge
它们与当前分支一起存在。git pull
将运行当前分支所跟踪的远程条格获取,然后合并结果。您可以使用git fetch
查看是否对远程分支有任何更新,而不必将其与您的本地分支合并。
简单说,如果你打算跳上飞机 没有任何互联网连接... 在离开之前,你可以做git fetch origin <branch>
。它会将所有更改带入您的计算机,但会将其与您的本地开发/工作空间区分开来。
在飞机上,您可以对本地工作空间进行修改,然后将其与您先前所获取的合并,然后解决潜在的合并冲突,而无需与互联网连接。除非有人做了新建新远程仓库的更改 :git push origin <branch>
去拿你的咖啡来
从这美妙的阿特拉斯教程:
缩略
git fetch
命令从远程仓库下载文件,从远程仓库下载到本地仓库。获取是您想看到每个人 所做的事其它它与 SVN 的更新相似, 它让您看到中央历史的进展, 但并不迫使您将修改合并到仓库。 Git从现有本地内容中获取的内容,它有绝对当地发展工作不受到任何影响。获取的内容必须使用
git checkout
命令。这使得获取安全的审查方式在将其与您本地的仓库整合之前能够兑现承诺。从远程仓库下载内容时,
git pull
和git fetch
用于完成任务的命令。您可以考虑git fetch
两个命令的“ 安全” 版本。 它会下载远程内容, 但不更新本地仓库的工作状态, 使您目前的工作保持完整 。git pull
是一个更积极的选项, 它会下载远程内容, 并立即执行 。git merge
以创建新远程内容的合并承诺。如果您在进展中出现变化,这将引发冲突和启动合并冲突解决流程。
与git pull
:
- 你没有得到任何孤立。
- 不需要明确检查 因为它暗含
git merge
. - 合并步骤将影响您的本地发展,中 中 中 中 中 中导致冲突起因的冲突
- 基本上不安全 这是侵略性的
- 相 异
git fetch
它只影响你.git/refs/remotes
Git拉力会影响你.git/refs/remotes
和.git/refs/heads/
嗯... 所以如果我不更新工作副本git fetch
,然后我在哪里做改变? Git在哪里获得新承诺的商店?
最首要的重要问题,heads
或remotes
不存储新的承诺,他们只是指针承诺承诺。git fetch
下载最新数据git 对象(blob, 树, 承诺。 要完全理解对象观察这个视频在 Git 内部),但只能更新您的remotes
指指该分支的最新任务。 它仍然与您的工作副本隔开, 因为您的分支的指针在heads
目录尚未更新。 它只会在merge
/pull
但还是在哪里?
在您的工程目录( 即您在哪里做git
执行命令( do) :
ls
。此选项将显示文件目录( T) 。 没有什么很酷的, 我知道 。现在做做
ls -a
。这将显示点点文件,即从.
这样您就可以看到一个名为 :.git
.do do do Do
cd .git
。这显然会改变你的目录。现在来有趣的部分; 做
ls
。您将会看到目录列表。我们正在寻找refs
。 do 做cd refs
.有趣的是,看看所有目录里面有什么, 但是让我们集中关注其中两个。
heads
和remotes
. 使用cd
检查他们内部。任何
git fetch
它将更新该页面中的指针。/.git/refs/remotes
目录。不会更新/.git/refs/heads
目录。任何
git pull
将首先完成git fetch
更新项目并更新/.git/refs/remotes
目录。然后它将会并且,还有与本地的本地合并,然后在/.git/refs/heads
目录。
还可以找到一个非常良好的相关答案:"Gitt gets" 的地方本身在哪里?.
另外,搜索“斜缩缩写”Git 分支命名惯例它有助于您更好地了解 Git 如何将事物放在不同的目录中。
查看实际差异
仅仅做:
git fetch origin master
git checkout master
如果远程主机更新了, 你会收到这样的讯息:
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
如果你没有fetch
并且刚刚git checkout master
然后,你的地方小人物不会知道有2项承诺被添加。 它只会说:
Already on 'master'
Your branch is up to date with 'origin/master'.
但是,这是过时的,不正确的。因为Git会仅仅根据它所知道的,给你反馈。 新的承诺,它还没有撤销...
当地分行工作时,有没有办法看到在远距离进行的新变化?
有些国际开发实体(例如Xcode)超级聪明,使用git fetch
并且可以说明您当前工作分支的远程分支中已经更改的代码行行。 如果该行被本地更改和远程分支修改, 那么该行会用红色附加注释。 这不是合并冲突。 这是 a潜在潜力合并冲突 。 这是一个提示, 您可以在进行合并冲突前先用它解决未来合并冲突 。git pull
来自远程分支。
托盘提示 :
如果您已获取远程分支, 例如 :
git fetch origin feature/123
这将进入您的远程目录。 您的本地目录仍然无法访问它。 但是, 它简化了您在 DWIM 远程分支的校验( 做我的意思 ) :
git checkout feature/123
无需再做下列工作:
git checkout -b feature/123 origin/feature/123
将 " 更多 " 改为 " 更多 " 改为 " 更多 "在这里
所有分支都存放在.git/refs
所有地方分支机构都存放在.git/refs/heads
所有远程分支都存放在.git/refs/remotes
缩略
git fetch
命令下载 承诺, 文件, 和 refs 从远程仓库下载到您的本地 repo 。 抓取是您想要看到其他人正在做的工作时要做的事情 。
所以当你做git fetch
全部文件、 承诺和 refs 都下载在
此目录.git/refs/remotes
您可以切换到这些分支以查看变化 。
另外,如果你愿意,你可以把它们合并起来。
git pull
只需下载这些更改, 并将其合并到当前分支 。
示例示例示例示例
如果您想看远程分支的工作dev/jd/feature/auth
,你只需要做
git fetch origin dev/jd/feature/auth
看到变化或工作进展做,
git checkout dev/jd/feature/auth
但如果您也想要获取它们并将其合并到当前分支,
git pull origin dev/jd/feature/auth
如果有的话git fetch origin branch_name
,它将获取分支,现在您可以切换到您想要的分支,并看到变化。您的本地主子或其他本地分支不会受到影响。但您不会受到影响。git pull origin branch_name
将获取分支, 并合并到当前分支 。
实际上 Git 保有一份您自己的代码副本和远程仓库 。
命令git fetch
通过从远程仓库获取数据来更新您的本地副本。 我们需要这个数据的原因是, 其他人可能对代码做了一些修改, 您想要不断更新自己 。
命令git pull
将远程仓库的更改引入到您保存自己的代码的位置。通常,git pull
这样做的方式是先做一个“ 直接获取” , 将远程仓库的本地副本更新, 然后将修改合并到您自己的代码存储处, 并有可能将您的工作副本合并到您自己的代码存储处 。
初学者的简单图形化代表,
在这里,
git pull
将会从仓库获取代码 并重新基础与您的本地... 在git拉动中,有 可能性创造新的承诺。
但是在,
git 获取 git 获取
将会从存储库获取代码, 我们需要通过使用git rebase
eg: 我要从服务器主机取回它, 并在本地主机重标 。
1) git pull( 重基将自动完成) :
git pull origin master
在这里来源来源是你的远程回寄师父您的分支
2) git 获取( 需要手动重标) :
git fetch origin master
它会从源代码中获取服务器更改。 它会位于本地, 直到您自己重新定位它。 我们需要通过检查代码手动来修正冲突 。
git rebase origin/master
这将会将代码重设为本地代码。 在确保您在正确的分支之前。
推荐文章
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 为什么要把Gradle Wrapper提交给VCS?
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件