【问题标题】:Updating fork with upstream: git fetch-checkout-merge vs. git checkout-pull?使用上游更新 fork:git fetch-checkout-merge 与 git checkout-pull?
【发布时间】:2018-07-28 21:56:18
【问题描述】:

我正在尝试了解如何使我的 fork 的 master 与原始 repo(我从中分叉的)master 保持更新。

我阅读了两份文件:

两个文档或多或少都提供了以下步骤:

git fetch upstream
git checkout master
git merge upstream/master

这 3 个步骤能否安全地简化为:

git checkout master
git pull upstream/master
  1. 如果是,是否存在减少两步更新的情况 会导致问题,但三步更新不会?
  2. 这两个步骤可以简化为一个步骤吗?

【问题讨论】:

标签: git git-merge pull-request git-pull git-fork


【解决方案1】:

我刚刚在本地测试了一下,感觉还不错。

git checkout master
git pull upstream master

这将从upstream 指定的存储库中提取master 分支,并将其与您所在的当前分支合并。如果有任何冲突,系统会提示您手动解决。

我目前无法想到两步版本会导致任何问题的任何情况,前提是您遵循从不提交分支存储库的master 分支的良好做法。很方便,和三步版做的一样。

对于最后一个问题,恐怕没有(或有条件地)。在将upstream/master 合并到您的工作树之前,您需要切换到master 分支,否则会导致其他问题。条件是当您始终在分支 master 上并且从不对其进行任何提交时,您可以省略 checkout 步骤。

【讨论】:

    【解决方案2】:

    正如 iBug 指出的那样,没有一个命令可以更新您的分支,但您可以创建一个别名:

    [alias]
        update = !git rev-parse --verify refs/heads/$1 && git checkout $1 -- && git pull origin $1
    

    现在如果你 git update master 它会将你切换到 master 分支,并将 origin/master 拉到你的分支中。

    【讨论】:

    • 注意:这是一个快速而肮脏的别名,所以可能有一些我没有考虑过的边缘情况!
    猜你喜欢
    • 2017-03-28
    • 2018-11-23
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    相关资源
    最近更新 更多