【发布时间】:2017-06-30 07:02:59
【问题描述】:
git pull、git fetch 和 git rebase 之间有什么区别?我觉得 pull 和 fetch 是一样的。
【问题讨论】:
-
我建议你阅读Pro Git。前三章涵盖了您日常所需的 95%,包括您的问题的答案。
-
git pull --rebase相当于后两者
git pull、git fetch 和 git rebase 之间有什么区别?我觉得 pull 和 fetch 是一样的。
【问题讨论】:
git pull --rebase 相当于后两者
Fetch:用远程更改更新本地,但不与任何本地分支合并强>。
Pull:更新本地并将更改合并与current-branch。
git fetch:从原点获取最新更改(不合并)
git pull = git fetch + git merge
如果你将feature 分支变基到master 分支。 git rebase master,它将保留feature 分支commits/changes 顶部。
假设您在 master 分支 (A -> C) 中有两个提交,在 feature 分支 (B -> D) 中有两个提交。
假设您在 feature 分支 (git checkout feature)。现在如果你merge master 然后提交历史:
(previous commit) - A -- C <- master
\ \
B -- D -- M <- feature
在这里,M 代表new-merge-commit-sha。
对于rebase master,提交历史:(A -> C -> B' -> D')。
【讨论】:
feature 变基为master,而不是相反。
git merge master 将导致比您所展示的更复杂的提交历史。
simple/generic的区别。
git merge 的段落中的提交历史记录不正确。
git rebase master 会将当前分支重新定位到 master。