switch/swap git 两个分支之间签到的简便方法

Easy way to switch/swap git checkins between 2 branches

我在 develop-branch 上实现了一个功能。效果很好,但后来我想出了一个有趣的选择。我在 develop 上的功能签入之前从 develop-branch 的签入分支来实现替代方案。
现在我决定我的替代方案是更好的实施。但我不想放弃第一个实现。我的分支现在看起来像这样:

我想在 "develop" 分支上继续,并在 "newoverview" 分支上保留第一个实施。
有没有比以某种方式保留每个分支的更改更简单的方法。撤消两个分支提交。将更改重新应用到正确的分支并再次签入?这听起来像是很多容易出错的任务。

我可以告诉 git 进行第一次提交并将其放在 "newoverview" 分支上,然后第二次提交将其放在 "develop" 分支上吗?

Ann:我的仓库也有一个 master 分支。但是只有当我完成并且仅来自开发分支时,这一个才会合并更改。所有其他分支也不会推送到服务器。他们只是在本地。

结帐到开发分支

git checkout develop

在 develop 之上创建一个新分支以保存结果。不要结帐!

git branch alternative

reduce develop to common ancestor with newoverview,这似乎是之前的提交。
如果不是之前的提交,使用最后一个共同祖先的 SHA 而不是 HEAD^

git reset --hard HEAD^
git reset --hard abcd1234

将新功能合并到开发中。

git merge newoverview

如果出现任何问题,使用它来恢复丢失的提交的 SHA

git reflog