我已经创建了 2 个到远程dev
分支的提交。我挤压并合并到远程master
分支中。
现在,当我想继续在分支上工作dev
- 我不知道如何正确"修复"我的分支 - 因为在从dev
创建新的拉取请求后master
我得到了在上一个拉取请求中被压缩的所有提交的列表。
我有这样的东西:
O ---- A ---- B ---- XY <--(master)
X ---- Y ---- Z <--(development)
如何使用从dev
到master
的提交 Z 创建正确的拉取请求?
在将新提交添加到开发分支之前,您应该首先将其重置为origin/master
,因为您squashed/merge
开发它。
为了不破坏任何内容,请从源/主创建一个新分支:
cd /local/repo
git fetch
git checkout -b newBranch origin/master
然后在该新分支上报告您的新提交:
git cherry-pick Y..Z
最后,将开发分支重置为所述新分支:
git checkout dev
git reset --hard newBranch
并用力推:git push --force
.
最终结果将是仅包含新提交的新 PR
如果您无法正确确定提交Y
,如果我们谈论的是更复杂的场景,那么从master
中恢复XY
提交也可以:
git checkout master
git revert XY
git push
然后,从dev
到master
的拉取请求将不再有冲突。