如何使用上游的最新更改来更新我的分支

时间:2015-03-18 04:25:00

标签: github merge branch pull

这个问题可能听起来微不足道,但我真的不知道该怎么做...我正在开发一个开源项目,源代码在Github上,所以我已经分配了那个回购,添加了一个“远程上游“指回原始仓库,并在我的分叉仓库中创建了一个分支并进行了一些更改。它看起来像这样:

$git remote -v
origin    https://github.com/my_github_account/project_name (fetch)
origin    https://github.com/my_github_account/project_name (push)
upstream  https://github.com/project_name/repo_name (fetch)
upstream  https://github.com/project_name/repo_name (push)

$git branch
  master
* test_branch

在我的“test_branch”上做了一些更改之后,上游也有一些新的变化,所以我想从上游获取最新的更改,将它们合并到我的test_branch,看看是否一切正常。我试过了:

git pull upstream master

它可以正常工作,但它也创建了一个“新提交”,因为当我向项目创建拉取请求时,也会显示提交消息,如果我以这种方式经常拉动上游更改,那里将是很多

Merge branch 'master' of https://github.com/project_name/repo_name into test_branch

消息显示,这对其他人来说有点混乱,我也看不到其他人的拉动请求包含这些消息......(或者可能有某种方法可以摆脱这些消息?)

我也用Google搜索并尝试:

git pull --rebase upstream master

然后执行:

git push origin test_branch

然后我得到了一些错误,例如:

 ! [rejected]        test_branch -> test_branch (non-fast-forward)
error: failed to push some refs to 'https://github.com/my_github_account/project_name'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
嗯......我没有清楚地了解这意味着什么......也许我没有以正确的方式做到这一点......那么从上游获取最新变化的程序通常是什么/将它们合并到我的分支中?

提前致谢!

1 个答案:

答案 0 :(得分:0)

第二种方法是正确的方法(在更新的test_branch之上重播master)。

但它也会产生重写test_branch历史的预期副作用,你不得不强制将它推到你的叉子上

git push --force origin test_branch

因为它是你的分支而没有其他人正在使用origin/test_branch,所以没关系,即使你正在进行PR,拉动请求也会检测到强制推动并相应地自行更新。