当前回答
其他回答
Git 获取
您从源头通过获取下载到本地分支的更改 。 获取请求远程回购, 询问其他人所做的全部承诺, 但您没有在本地回购上。 获取这些承诺的下载, 并将其添加到本地仓库 。
基特合并
您可以通过合并命令获取下载的更改。 合并后将获取从获取中提取的承诺, 并尝试将其添加到您的本地分支。 合并后将保留您本地变化的承付历史, 这样当您以推力共享分支时, Git 将知道其他人如何将您的变化合并 。
吉特拉拉
抓取并合并一起运行的频率足够大, 足以创建一个将两者合并、 拉动、 合并的命令。 拉动时会抓取并合并, 以添加下载的字符串 。 @ info: whatsthis
之间唯一的差别git pull
和git fetch
是:
git pull
从远程分支拉出并合并。
git fetch
仅从远程分支获取取取, 但它不合并
i. e. git pull = git 获取 + git 合并...
git pull
获取承诺后尝试自动合并 。上下文敏感,因此所有被拉动的承诺都将合并为您目前活跃的分支。git pull
自动合并承诺未经审查,而不先审查。。如果你不仔细管理自己的分支,你可能会遇到频繁的冲突。git fetch
收集当前分支中不存在的目标分支的任何承诺,并将其存储在本地仓库中然而,它不会与您当前分支合并。如果您需要不断更新您的仓库,但正在研究一些更新文件时可能中断的文件。要将承诺整合到当前分支中,您必须使用git merge
之后。
Git 获取
帮助您从一个git repository
。让我们假设你在一个团队中工作 使用GitFlow
,其中团队在多个branches
(特征). 与git fetch --all
command
您可以了解所有新的信息branches
内repository
.
大部分git fetch
用于git reset
。例如,您想要将全部本地更改恢复到当前仓库状态。
git fetch --all // get known about latest updates
git reset --hard origin/[branch] // revert to current branch state
Git 拉着
此命令更新您branch
与当前repository
branch
状态。让我们继续GitFlow
多个特性branches
原为merged
至develop
分支,当您想要为项目开发新特性时,您必须去开发branch
并做一个git pull
以获得当前状态develop
branch
GitFlow 文档文档https://gist.github.com/peterdeweese/4251497
简单说,如果你打算跳上飞机 没有任何互联网连接... 在离开之前,你可以做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添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别