拉取请求包含来自 master 的提交
Pull request contains commits from master
我一周前从 master 分支出来的。
master -> my_branch_1
在此期间,我对 my_branch_1
做出了承诺,并且还多次重新基于 origin/master
以跟上。
ATM 分行状态(概念化)
commit0
master -> my_branch_1
master:
commit1
commit3
commit10
my_branch_1 (commits from master are marked with *)
commit1*
commit2
commit3*
commit4...commit9
commit10
当我尝试将 PR 打开回 master
时出现问题。 PR 日志显示所有提交 1...10
,而我预计只会出现提交 2, 4...9
。
- 我做错了什么?
- 我应该如何解决这个问题?
-- 编辑 --
对评论中 origin
讨论的澄清。目的是将 master 上发生的提交接收到我的分支中。
这是我想要的结果,因为我想尽可能接近“master
”以与代码库的其余部分保持同步。
我不想让这些已经在 master
中的提交出现在我正在对 master
进行的 PR 中
-- 编辑 2 --
此问题与托管在 GitHub 上的私人仓库有关。不是分叉的回购。
What have I done wrong?
听起来你是从 origin/master
拉出来的而不是变基,至少是为了得到 commit3
.
How should I fix this?
首先,从你的分支创建一个备份分支,以防你搞砸了。您可以通过从当前分支创建一个新分支来做到这一点。例如,如果你在你正在工作的分支中,你可以:
git checkout -b my_branch_1_backup
创建一个新分支,然后 checkout
返回您的工作分支:
git checkout my_branch_1
其次,再次变基。我将从进行交互式变基开始,然后删除不需要的提交。使用 -i
标志以交互方式变基,例如:
git rebase -I commit1
这将为您提供一个可以编辑的可追溯到 commit1
的提交列表,例如:
pick commit2
pick commit3
pick commit4
等等。如果您不想要 commit3
(因为它已经在 master
中),请将 pick commit3
更改为 drop commit3
。在您的编辑器的评论中会有其他选项的列表。确定提交列表后,保存并退出编辑器,然后执行以下操作:
git log
您应该会看到日志反映了您的更改。
最后,您可以变基到 origin/master
,这将使 git 获得 master
中的任何新提交,然后将您的提交添加到 [=22= 中的提交之上]:
git rebase origin/master
再次检查日志,您应该在日志中看到来自 master
的提交,但在您添加到分支中的提交之前。
此时,您的拉取请求应仅包含您在分支中添加的提交。
我一周前从 master 分支出来的。
master -> my_branch_1
在此期间,我对 my_branch_1
做出了承诺,并且还多次重新基于 origin/master
以跟上。
ATM 分行状态(概念化)
commit0
master -> my_branch_1
master:
commit1
commit3
commit10
my_branch_1 (commits from master are marked with *)
commit1*
commit2
commit3*
commit4...commit9
commit10
当我尝试将 PR 打开回 master
时出现问题。 PR 日志显示所有提交 1...10
,而我预计只会出现提交 2, 4...9
。
- 我做错了什么?
- 我应该如何解决这个问题?
-- 编辑 --
对评论中 origin
讨论的澄清。目的是将 master 上发生的提交接收到我的分支中。
这是我想要的结果,因为我想尽可能接近“master
”以与代码库的其余部分保持同步。
我不想让这些已经在 master
中的提交出现在我正在对 master
-- 编辑 2 --
此问题与托管在 GitHub 上的私人仓库有关。不是分叉的回购。
What have I done wrong?
听起来你是从 origin/master
拉出来的而不是变基,至少是为了得到 commit3
.
How should I fix this?
首先,从你的分支创建一个备份分支,以防你搞砸了。您可以通过从当前分支创建一个新分支来做到这一点。例如,如果你在你正在工作的分支中,你可以:
git checkout -b my_branch_1_backup
创建一个新分支,然后 checkout
返回您的工作分支:
git checkout my_branch_1
其次,再次变基。我将从进行交互式变基开始,然后删除不需要的提交。使用 -i
标志以交互方式变基,例如:
git rebase -I commit1
这将为您提供一个可以编辑的可追溯到 commit1
的提交列表,例如:
pick commit2
pick commit3
pick commit4
等等。如果您不想要 commit3
(因为它已经在 master
中),请将 pick commit3
更改为 drop commit3
。在您的编辑器的评论中会有其他选项的列表。确定提交列表后,保存并退出编辑器,然后执行以下操作:
git log
您应该会看到日志反映了您的更改。
最后,您可以变基到 origin/master
,这将使 git 获得 master
中的任何新提交,然后将您的提交添加到 [=22= 中的提交之上]:
git rebase origin/master
再次检查日志,您应该在日志中看到来自 master
的提交,但在您添加到分支中的提交之前。
此时,您的拉取请求应仅包含您在分支中添加的提交。