';吉特拉力';和';git fetch';?
';吉特拉力';和';git fetch';?,git,version-control,git-pull,git-fetch,Git,Version Control,Git Pull,Git Fetch,git-pull和git-fetch之间有什么区别?最简单的说法是,git-pull先执行git-fetch,然后执行git-merge 您可以随时执行git fetch以更新refs/remotes/下的远程跟踪分支。此操作不会更改refs/heads下您自己的任何本地分支,并且无需更改您的工作副本即可安全执行。我甚至听说有人在后台定期在cron作业中运行git fetch(尽管我不建议这样做) 一个git pull(git pull)是您将要做的事情,它使本地分支更新其远程版本,同时也更新您
git-pull
和git-fetch
之间有什么区别?最简单的说法是,git-pull
先执行git-fetch
,然后执行git-merge
您可以随时执行git fetch以更新refs/remotes/
下的远程跟踪分支。此操作不会更改refs/heads
下您自己的任何本地分支,并且无需更改您的工作副本即可安全执行。我甚至听说有人在后台定期在cron作业中运行git fetch
(尽管我不建议这样做)
一个git pull(git pull)是您将要做的事情,它使本地分支更新其远程版本,同时也更新您的其他远程跟踪分支
从Git文档中获取:
在默认模式下,git-pull
是git-fetch
的缩写,后跟git-merge-fetch\u-HEAD
git pull-从另一个存储库或本地分支获取并与之合并
提要
git pull…
描述
使用给定的参数运行git fetch,并调用git merge来合并
检索到当前分支中的头。使用--rebase,调用git-rebase
而不是git合并。
请注意,您可以使用。(当前目录)作为要拉取的
从本地存储库-这在合并本地分支时非常有用
进入当前分支。
还要注意,用于git pull本身和底层git合并的选项
必须在git fetch的选项之前给出。
如果您希望合并历史记录,您可以提取,如果您只是“想要代码”,您可以提取,因为有人在这里标记了一些文章。git fetch的一个用例是,以下内容将告诉您自上次提取以来远程分支中的任何更改。。。因此,您可以在执行实际拉取之前进行检查,这可能会更改当前分支和工作副本中的文件
git fetch
git diff ...origin
请参阅:关于diff命令中的双点和三点语法,您可以从远程存储库获取,请参阅差异,然后进行拉取或合并 这是一个名为
origin
的远程存储库和一个名为master
的分支跟踪远程分支origin/master
的示例:
git checkout master
git fetch
git diff origin/master
git rebase origin master
简单明了的答案是,
git pull
是简单的git fetch
,然后是git merge
非常重要的是要注意,git pull
将自动合并,无论您喜欢与否。当然,这可能会导致合并冲突。假设您的遥控器是origin
,而您的分支是master
。如果在拉取之前git diff origin/master
,您应该对潜在的合并冲突有所了解,并可以相应地准备本地分支
除了拉和推之外,还包括git-rebase
,比如我从链接文章中转述的这个:
git pull origin master
git checkout foo-branch
git rebase master
git push origin foo-branch
如果您发现自己处于这种情况,您可能会尝试git-pull--rebase
。除非你真的,真的知道你在做什么,否则我建议你不要这样做。此警告来自git pull
版本2.3.5
的man
页面:
这是一种潜在的危险操作模式。它重写了
历史,当你发表这段历史时,这不是好兆头
已经。除非已阅读git rebase(1),否则不要使用此选项
小心地
- 使用
时,Git会尝试自动合并它是上下文敏感的,因此Git会将任何拉入的提交合并到您当前正在处理的分支中pull
自动合并提交,而不让您先查看它们。如果你不小心管理你的分支机构,你可能会经常遇到冲突pull
- 当您
时,Git从目标分支收集当前分支中不存在的任何提交,并将其存储在本地存储库中。但是,它不会将它们与当前分支合并。如果您需要使存储库保持最新,但正在处理更新文件时可能会出现问题,则这一点特别有用。要将提交集成到当前分支中,必须在之后使用fetch
merge
HEAD
的原点/主指针,主指针指向同一HEAD
当您开始工作并进行提交时,您将主指针前进到头
+您的提交。但原始/主指针仍指向克隆时的位置
因此,区别在于:
- 如果执行
操作,它只会获取远程存储库()中的所有更改,并将源/主指针移动到git fetch
。同时,您当地的分支主管将继续指出它所在的位置头
- 如果您执行
,它基本上会执行fetch(如前面所述)并将任何新更改合并到您的主分支,并将指针移动到git pull
HEAD
git pull origin master
git checkout foo-branch
git rebase master
git push origin foo-branch
--------------------- ----------------------- -----------------------
- Remote Repo - - Remote Repo - - Remote Repo -
- - - gets pushed - - -
- @ R01 - - @ R02 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Repo - - Local Repo - - Local Repo -
- pull - - - - fetch -
- @ R01 - - @ R01 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Sandbox - - Local Sandbox - - Local Sandbox -
- Checkout - - new work done - - -
- @ R01 - - @ R01+ - - @R01+ -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Remote Repo - - Remote Repo - - Remote Repo -
- - - gets pushed - - -
- @ R01 - - @ R02 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Repo - - Local Repo - - Local Repo -
- pull - - - - pull -
- @ R01 - - @ R01 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Sandbox - - Local Sandbox - - Local Sandbox -
- Checkout - - new work done - - merged with R02 -
- @ R01 - - @ R01+ - - @R02+ -
--------------------- ----------------------- -----------------------
git pull == git fetch + git merge
git fetch
git diff master origin/master
git pull
LOCAL SYSTEM
. =====================================================
================= . ================= =================== =============
REMOTE REPOSITORY . REMOTE REPOSITORY LOCAL REPOSITORY WORKING COPY
(ORIGIN) . (CACHED)
for example, . mirror of the
a github repo. . remote repo
Can also be .
multiple repo's .
.
.
FETCH *------------------>*
Your local cache of the remote is updated with the origin (or multiple
external sources, that is git's distributed nature)
.
PULL *-------------------------------------------------------->*
changes are merged directly into your local copy. when conflicts occur,
you are asked for decisions.
.
COMMIT . *<---------------*
When coming from, for example, subversion, you might think that a commit
will update the origin. In git, a commit is only done to your local repo.
.
PUSH *<---------------------------------------*
Synchronizes your changes back into the origin.
git pull
git pull origin master
git fetch origin master
git rebase origin/master
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)
Already on 'master'
Your branch is up to date with 'origin/master'.
git fetch origin feature/123
git checkout feature/123
git checkout -b feature/123 origin/feature/123