压缩后如何修复我的 git 分支是 dev 的主人

How fix my git branches after squashing is master behind dev

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

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

我有这样的东西:

O ---- A ---- B ---- XY <--(master)
 \
  X ---- Y ---- Z <--(development)

如何使用提交 Z 从 devmaster 创建正确的拉取请求?

在向您的开发分支添加新提交之前,您应该首先将其重置为 origin/master,因为您 squashed/merge 开发了它。

为了不破坏任何东西,从 origin/master:

创建一个新分支
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 的 pull request 将不再有冲突。