如何从已经结帐的拉取请求中拉取更改?

时间:2019-05-15 21:18:50

标签: git pull-request

我已经使用以下方法检出了PR:

git fetch origin pull/pull_req_ID/head:NEWBRANCHNAME

但是,我无法从该PR将更改拉到我的本地分支。

4 个答案:

答案 0 :(得分:2)

拉取请求是在线存储库(如Github)的功能,基本上意味着“此人希望将这些更改 this 分支合并为 that 分支”。它不是实际的分支,而是呈现了某人的分支中的更改,允许在将这些更改合并到某个基础之前对其进行讨论/审查。 em>分支。

用Git来讲,基本上是要求进行git merge的请求。

因此,您需要做的是检查请求请求信息,找到SOURCE(要合并的分支)和DEST(要合并到的分支)。这是Github的示例:

pr

其中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合并或接受拉取请求。

答案 1 :(得分:0)

如果您在本地分支机构中:

git pull
git merge NEWBRANCHNAME

答案 2 :(得分:0)

开始于:

git pull

您必须切换到将接收更改的分支。

git checkout old_branch

之后,与您提取请求的分支进行合并。

git merge changed_branch

答案 3 :(得分:0)

如果我正确理解了这个问题,则另一位开发人员在最初获取PR后已将更改推送到PR,并且您希望获得最新更新。这应该起作用:

git checkout NEWBRANCHNAME
git fetch origin pull/pull_req_ID/head
git rebase FETCH_HEAD  # Or git merge FETCH_HEAD

Bitbucket示例:

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