这个问题可能听起来微不足道,但我真的不知道该怎么做...我正在开发一个开源项目,源代码在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.
嗯......我没有清楚地了解这意味着什么......也许我没有以正确的方式做到这一点......那么从上游获取最新变化的程序通常是什么/将它们合并到我的分支中?
提前致谢!
答案 0 :(得分:0)
第二种方法是正确的方法(在更新的test_branch
之上重播master
)。
但它也会产生重写test_branch历史的预期副作用,你不得不强制将它推到你的叉子上
git push --force origin test_branch
因为它是你的分支而没有其他人正在使用origin/test_branch
,所以没关系,即使你正在进行PR,拉动请求也会检测到强制推动并相应地自行更新。