Difference between git merge and git fetch?
"git merge"和"git fetch"有什么区别?这两个命令我有些问题。我不知道什么时候该用这个或那个。
更新-很遗憾,我的合并图表一直都是错误的。合并不会移动"其他"分支的引用…
例如,假设您有一个远程回购,其中一个分支(
1 2 3 | 'origin' repo A --- B --- C --- D --- E <--(master) |
不久前,您克隆了这个repo;当时只有第一个commit(
1 2 3 4 5 | local repo A --- B <--(master)(origin/master) \ L <-- (branch1) |
请注意,除了您的本地分支引用(
现在,如果您希望更新本地回购,以包含来自源站的所有数据,但不合并任何内容,您可以说
1 | git fetch |
然后你就有了
1 2 3 4 5 | C --- D --- E <--(origin/master) / A --- B <--(master) \ L <-- (branch1) |
这是一个获取-从远程获取数据。
你明确要求使用
1 2 | git checkout master git merge branch1 |
(然后可能解决任何冲突)现在
1 2 3 4 5 | C --- D --- E <--(origin/master) / A --- B --- M <--(master) \ / L ------- <--(branch1) |
(在某些情况下-只有一个分支包含另一个分支中没有的更改-可以通过"快进"完成合并;但由于每个分支都有更改,因此此处不适用,即分支已经分叉。还有另一种技术叫做重新平衡,有时可以用来组合分支;但那是另一种蠕虫……)
所以这就是
1 2 | # still on master git pull |
给人的感觉
1 2 3 4 5 | C --- D --- E --- N <--(master)(origin/master) / / A --- B --------------- M \ / L ------------------- <--(branch1) |
(请注意,虽然我通常绘制这些图表时,合并中的"直线"是"第一个父级",但在这种情况下,
当我谈到"引入变化"以使