压缩后如何修复我的 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 从 dev
到 master
创建正确的拉取请求?
在向您的开发分支添加新提交之前,您应该首先将其重置为 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
那么你从 dev
到 master
的 pull request 将不再有冲突。
我已经创建了 2 个提交到远程 dev
分支。我压缩并合并到远程 master
分支。
现在,当我想继续在 dev
分支上工作时 - 我不知道如何才能正确 "repair" 我的分支 - 因为在从 dev
创建新的拉取请求之后master
我得到了在之前的拉取请求中被压缩的所有提交的列表。
我有这样的东西:
O ---- A ---- B ---- XY <--(master)
\
X ---- Y ---- Z <--(development)
如何使用提交 Z 从 dev
到 master
创建正确的拉取请求?
在向您的开发分支添加新提交之前,您应该首先将其重置为 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
那么你从 dev
到 master
的 pull request 将不再有冲突。