git pull 、git fetch 和 git rebase 之间有什么区别?

what is the difference between git pull , git fetch and git rebase?

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

获取:更新本地 远程更改不合并 与任何 本地分支

Pull: update localmerge current-branch

  • git fetch: 从origin获取最新变化(无合并)

  • 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').