使用上游更新fork:git fetch-checkout-merge与git checkout-pull?

时间:2018-02-18 14:59:47

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

我正在努力了解如何让我的fork的主人更新原始回购(我从中分叉)主人。

我读了两份文件:

这两个文件都提供了或多或少的步骤:

git fetch upstream
git checkout master
git merge upstream/master

这三个步骤可以安全地减少到:

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

2 个答案:

答案 0 :(得分:0)

我刚刚在本地进行了测试,似乎工作正常。

git checkout master
git pull upstream master

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

我目前无法想到两步版本会导致任何问题的任何情况,只要您遵循永不提交到分叉存储库的master分支的良好做法。它非常方便,与三步版本完全相同。

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

答案 1 :(得分:0)

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

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

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