挤压后如何修复我的 git 分支是开发背后的大师



我已经创建了 2 个到远程dev分支的提交。我挤压并合并到远程master分支中。

现在,当我想继续在分支上工作dev- 我不知道如何正确"修复"我的分支 - 因为在从dev创建新的拉取请求后master我得到了在上一个拉取请求中被压缩的所有提交的列表。

我有这样的东西:

O ---- A ---- B ---- XY <--(master)

X ---- Y ---- Z <--(development)

如何使用从devmaster的提交 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

然后,从devmaster的拉取请求将不再有冲突。