【发布时间】:2016-12-24 08:59:22
【问题描述】:
我不小心通过 Github PR 将一个分支合并到 master。我立即恢复了它(也通过 github)。几天后,当该代码经过测试并准备好合并时,合并和 PR 实际上不会将代码放入 master,因为提交已经存在于 github 中(但代码不存在,因为它已被还原。
所以现在我正试图让这些更改恢复到主控,经过一周的不相关提交。这大致是git log --oneline 在相关点上使用一些 cmets 输出的内容:
54c73ee (HEAD, origin/master, origin/HEAD, staging) Merge pull request #637 from leonsas/last-night-view-metric-ceiling
...
More unrelated changes that should stay in.
...
af602f0 Merge pull request #639 from leonsas/staging
67ded36 (origin/staging) Merge <-- Here's where I tried merging the changes again, but it doesn't make it into the codebase.
...
Bunch of unrelated commits that should stay.
...
a603d0b Merge pull request #633 from leonsas/revert-628-hr-hrv-audit
c3da670 (origin/revert-628-hr-hrv-audit) Revert "Hr hrv audit"
01f2fab Merge pull request #632 from leonsas/revert-629-always-get-hrvz
5824fc8 (origin/revert-629-always-get-hrvz) Revert "Always get hrvz" <-- I reverted changes, because code wasn't tested
b75a537 First iteration at setting the max value on the chart
6939035 Merge pull request #631 from leonsas/is-valid-fix
87b53d5 Merge pull request #629 from leonsas/always-get-hrvz <-- These changes I want in
5b9a848 Merge pull request #628 from leonsas/hr-hrv-audit
将这些更改重新应用回 master 的最佳方法是什么?
-- 更新 1
根据 Thomas 的建议,我再次尝试了 rebase 解决方案:
> git checkout -b hrv-almost-latest-changes e1d0d7b
> git rebase master-clone
First, rewinding head to replay your work on top of it...
Fast-forwarded hrv-almost-latest-changes to master-clone.
> git push --set-upstream origin hrv-almost-latest-changes
但是master 与hrv-almost-latest-changes 完全是最新的,所以没有什么可以在 github PR 上合并。
-- 更新 2
一般来说,樱桃采摘效果很好。具体解决办法是:
git checkout master
git checkout -b hrv-merge-fix
git cherry-pick -m 1 87b53d5
(solve conflicts)
git add <files from solved conflicts>
git cherry-pick --continue
git cherry-pick -m 1 5b9a848
git push origin hrv-merge-fix
【问题讨论】:
标签: git github git-revert