压扁后如何修复我的 git 分支是 master Behind dev

Jen*_*nan 7 git git-squash

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

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

我有这样的事情:

O ---- A ---- B ---- XY <--(master)
 \
  X ---- Y ---- Z <--(development)
Run Code Online (Sandbox Code Playgroud)

如何使用 commit Z from devto创建正确的拉取请求master

Von*_*onC 6

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

为了不破坏任何东西,从 origin/master 创建一个新分支:

cd /local/repo
git fetch
git checkout -b newBranch origin/master
Run Code Online (Sandbox Code Playgroud)

然后报告您在该新分支上的新提交:

git cherry-pick Y..Z
Run Code Online (Sandbox Code Playgroud)

最后,将您的开发分支重置为所述新分支:

git checkout dev
git reset --hard newBranch
Run Code Online (Sandbox Code Playgroud)

并用力推:git push --force

最终结果将是一个仅包含新提交的新 PR