[英]How to pull changes from a pull request thats already checkout?
我已经使用以下方法检查了 PR:
git fetch origin pull/pull_req_ID/head:NEWBRANCHNAME
但是,我无法从该 PR 中对我的本地分支进行更改。
拉取请求是在线存储库(如 Github)的特性,基本上意味着“这个人想要将这些更改从这个分支合并到那个分支”。 它不是一个实际的分支,而是显示来自某人分支的更改,允许在将其合并到某个基本分支之前讨论/审查这些更改。
在 Git 术语中,它基本上是执行git merge
的请求。
所以你需要做的是检查pull request信息,找到SOURCE(要合并的分支)和DEST(要合并的分支)。 这是 Github 的一个例子:
其中 SOURCE 分支是fix-bug-1234
而 DEST 分支是master
。
然后做:
git fetch origin <SOURCE>
git fetch origin <DEST>
git checkout <DEST> # You will now be in DEST branch
git pull # Update copy of base branch
git merge origin/<SOURCE> # Merge changes from SOURCE to DEST
git push origin <DEST> # Push the update DEST branch
对我来说,最好创建 SOURCE 分支的本地副本。
git fetch origin # Fetch all branches, both SOURCE and DEST
git checkout <SOURCE> # Create a local copy of the SOURCE branch
git pull # You now have the changes to merge
git checkout <DEST> # You will now be in DEST branch
git pull # Update copy of base branch
git merge <SOURCE> # Merge changes from SOURCE to DEST
git push origin <DEST> # Push the update DEST branch
如果您不想处理这些命令行内容,在线存储库通常可以通过其 UI 合并或接受拉取请求。
如果我正确理解了这个问题,那么在您最初获取 PR 后,另一位开发人员已将更改推送到 PR,并且您希望获得最新更新。 这应该有效:
git checkout NEWBRANCHNAME
git fetch origin pull/pull_req_ID/head
git rebase FETCH_HEAD # Or git merge FETCH_HEAD
比特桶示例:
git fetch origin pull-requests/101/from:pr/101
git checkout pr/101
# ...New changes pushed to PR #101 by another developer
git fetch origin pull-requests/101/from
git rebase FETCH_HEAD
Gitlab 示例:
git fetch origin merge-requests/101/head:mr/101
git checkout mr/101
# ...New changes pushed to MR #101 by another developer
git fetch origin merge-requests/101/head
git rebase FETCH_HEAD
如果您在当地分行:
git pull
git merge NEWBRANCHNAME
从...开始:
git pull
您必须切换到将接收更改的分支。
git checkout old_branch
之后,与您执行拉取请求的分支进行合并。
git merge changed_branch
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.