【问题标题】:git pull remote branch V/S git merge remote/branch V/S git rebase remote/branchgit pull remote branch V/S git merge remote/branch VS git rebase remote/branch
【发布时间】:2018-10-18 05:21:41
【问题描述】:

考虑我的分叉仓库映射到远程origin,而父仓库映射到upstream

看起来,下面的所有3个命令都可以用来保持originmaster分支,与upstreammaster分支保持同步。

git pull upstream master

git merge upstream/master

git rebase upstream/master

请帮助我了解这三个命令之间是否有任何区别。

【问题讨论】:

  • git pull 意思是“运行git fetch,然后立即运行第二个Git命令”,通常是git merge,但如果你提前选择,你可以指定git rebase反而。所以git pullgit fetch plus 其他两个命令之一。对于初学者,我建议完全避免使用git pull:从git fetch 开始,然后自己运行其他命令。这样一来,一切都会变得更有意义。

标签: git repository git-merge git-rebase git-pull


【解决方案1】:

合并和拉取的输出是相同的,因为来自合并分支的更改应用于当前分支的当前提交之上。

在拉/合并之前

  A---B---C master on origin
 /
D---E---F---G master

之后

  A---B---C origin/master
 /         \
D---E---F---G---H master

rebase 的输出是 pull 的逆向。从当前分支创建点开始的所有新提交都被搁置。应用来自远程分支的提交,然后应用本地提交。因此,与拉取本地提交相比,远程提交结束。

     A---B---C topic
     /
D---E---F---G master

rebase 命令后

              A'--B'--C' topic
             /
D---E---F---G master

来源 - https://git-scm.com/docs/git-rebase

【讨论】:

    猜你喜欢
    • 2018-10-07
    • 2015-01-20
    • 1970-01-01
    • 2015-10-03
    • 2017-04-08
    • 1970-01-01
    • 2013-11-06
    • 2015-11-15
    • 2020-04-12
    相关资源
    最近更新 更多