【问题标题】:what is the difference between git pull , git fetch and git rebase? [duplicate]git pull 、 git fetch 和 git rebase 有什么区别? [复制]
【发布时间】:2017-06-30 07:02:59
【问题描述】:

git pullgit fetchgit rebase 之间有什么区别?我觉得 pull 和 fetch 是一样的。

【问题讨论】:

标签: git git-pull git-fetch


【解决方案1】:

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 将导致比您所展示的更复杂的提交历史。
  • 同意@Code-Apprentice,在这里我试图展示simple/generic的区别。
  • 只要它是正确的,保持简单就可以了。正如您在这里所看到的,您关于git merge 的段落中的提交历史记录不正确。
  • 另外,描述 rebase 的措辞也不正确。 git rebase master 会将当前分支重新定位到 master
猜你喜欢
  • 2011-03-22
  • 2011-09-11
  • 2021-08-17
  • 2018-03-05
  • 2020-08-24
  • 2015-03-21
  • 2022-06-14
  • 2014-10-15
相关资源
最近更新 更多