'git merge'和'git fetch'有什么区别? 我对这两个命令有一些问题。 我不知道什么时候应该使用其中一种。git merge和git fetch之间的区别?
回答
UPDATE - 良好的悲伤,我的合并图整个过程都是错误的。合并不动了“其他”分支的裁判......
git fetch
是有关从远程存储库检索数据。
git merge
是关于结合多行工作(通常是本地分行,但见下文)的工作。
git pull
(我知道你并没有问pull
但我承担)是从远程像fetch
检索数据的速记,然后merge
s转换你的当前分支从远程工作的相应行(如果有是“1”;“跟踪信息”决定了这一点)。
例如,假设你有一个包含5个提交的单个分支(master
)的远程仓库。
'origin' repo
A --- B --- C --- D --- E <--(master)
前一阵子你已经克隆了这个回购;当时只有第一次提交(A
)在其中。然后创建了一个新分支(branch1
)并做了一些工作,在该分支上创建了一个新的提交(L
)。最后,你已经从遥控器中取得了变化;更多关于稍后的工作方式,但现在让我们假设您更新了master
以包含B
。
local repo
A --- B <--(master)(origin/master)
\
L <-- (branch1)
注意,除了当地分行裁判(master
和branch1
)你有一个远程分支引用(origin/master
)中,现在,恰好是同master
。
现在,如果你想更新你的本地仓库包含从原点的所有数据,但不合并任何,你会说
git fetch
,然后你必须
C --- D --- E <--(origin/master)
/
A --- B <--(master)
\
L <-- (branch1)
这是一个获取 - 只需从远程获取数据。
您明确要求merge
的主要原因是将您的工作从branch1
与您的master
合并。所以
git checkout master
git merge branch1
(然后可能解决任何冲突),你现在有
C --- D --- E <--(origin/master)
/
A --- B --- M <--(master)
\ /
L ------- <--(branch1)
(在某些情况下 - 只有其中一个分支包含不在其他变化 - 合并能通过“快进”来完成,但因为每个分支有变化并不适用于此 - 即一级支流分歧此外还有另一个叫基础重建有时可以用来分行结合的技术,但这是另一个可以。蠕虫......)
所以这是fetch
和merge
之间的区别 - 非常不同的操作是做不同的事情。但我也提到了pull
这两种结合的方式。如果您执行pull
,则首先从远程获取更改(如果尚未完全更新,则使用fetch
),然后如果当前分支具有相应的远程分支,则会合并它们。
# still on master
git pull
给出类似
C --- D --- E --- N <--(master)(origin/master)
/ /
A --- B --------------- M
\ /
L ------------------- <--(branch1)
(请注意,虽然我通常画这些图使得“直线”进入合并为“第一父”,在这种情况下对于N
变得麻烦;但是这确实显示了一般的提交拓扑...)
当我谈论“拉动更改”以获得B
到您的本地代表o,它可能已经完成使用git pull
git fetch
将下载源代码树检查更改,并且git merge
将您当前的分支与另一个分支加入。
- 1. 有什么区别git fetch B + git merge B vs git merge origin/B
- 2. git pull --rebase,git rebase和git merge之间的区别
- 3. git分支:``git merge master``和``git pull origin master``之间的区别
- 4. git pull之间的区别。 master vs git merge master
- 5. git merge和github pull请求之间的区别
- 6. git merge --no-ff和git merge有什么区别--squash
- 7. 'git fetch'和'git fetch --all'有什么区别
- 8. git pull,git fetch和git rebase有什么区别?
- 9. 'git remote update','git fetch'和'git pull'有什么区别?
- 10. `git rebase foo bar`和`git checkout bar之间的区别; git rebase foo`?
- 11. git diff(git patch)和git push之间的区别
- 12. (git add -A后跟git commit)和git commit -a之间的区别?
- 13. git merge master vs git merge master coins有什么区别
- 14. .git/info/exclude和.gitignore之间的区别
- 15. 什么之间的区别〜^和Git中
- 16. git ignore和untrack之间的区别
- 17. Git和libgit2之间的区别
- 18. `git merge origin master`和`git merge origin/master`有什么不同吗?
- 19. `git remote prune`和`git branch -d -r`之间的区别
- 20. 'git svn rebase'和'git rebase trunk'之间的区别
- 21. git push origin和git push origin master之间的区别
- 22. git add和git commit之间的区别-a
- 23. git stash pop和git stash之间的区别适用
- 24. 在gerrit下git commit --amend和git rebase之间的区别
- 25. git add之间的区别。和git commit -am“message”
- 26. git push -f origin master和git push origin master之间的区别--force?
- 27. git pull和git请求拉之间的区别
- 28. git add之间的任何区别。和git add --all?
- 29. git pull和git pull之间的区别--rebase
- 30. 与上游同步叉:git fetch + git checkout + git merge与git checkout + git pull
'git fetch'使用自上一次提取以来已添加到服务器的提交更新本地存储库,而'git merge'将尝试组合两条并行的开发路径。他们完全不同。你有没有考虑阅读git上的许多教程之一,或Pro Git书籍(免费提供[在线](https://git-scm.com/book/en/v2))? –