我不确定这是否是重复的,因为它是一种一次性的场景:
我有一个“beta”分支,并开始了一个新的“重构”分支。
- 我在“重构”分支中做了一堆代码。
- 我将最新的更改从 beta 提取到重构 (
git checkout refactor && git pull origin beta
) - 我的更改已经准备好,所以我检查了 beta 版,并将更改从重构拉到了 beta 版。(
git checkout beta && git pull origin refactor
) - 意识到我的 beta 分支不是最新的,所以不得不做一个
git pull
把最新的拉到 beta 中。 - 现在 beta 分支是最新的,做另一个
git pull origin refactor
以确保最新版本在那里(收到一条自动提交消息,表明重构正在合并到 beta 中)。 - 我推了我的代码:(
所以现在我意识到我做错了两件事:
- 在第 3 步中,我应该先执行 git pull,以便拥有最新的 beta 变更集
- 在第 3 步中,我意识到我应该打电话
git merge refactor
而不是git pull origin refactor
(不要问我为什么这样做,现在是星期一,我只是想将我很棒的重构代码放入 beta 版开始测试)。我现在意识到,如果我已经完成了这两件事,则不需要后面的任何步骤。
所以我的问题是:从技术上讲,所有代码都在那里并且看起来不错,但是 github 上的网络图看起来超级时髦,而且我没有一个干净的“合并”提交,如果我的合并分支我可以轻松回滚需要还原,而 beta 版现在拥有我所有来自重构分支的个人提交。有没有一种简单的方法可以回滚我的愚蠢合并并以更清洁的方式进行?
我已经尝试过这样做git checkout beta && git reset --hard beta@{"1 hour ago"}
,但问题是这让我进入了过时的本地 beta 版本,而不是在我应该先完成 git pull 时发布合并之前的最新版本。我觉得应该有一种方法可以在 1 小时前git reset --hard origin/beta@{"1 hour ago"}
重置到远程beta 分支,然后执行git merge refactor
? 我是否能够推送这些更改并确保远程提交被覆盖?
提前感谢您的帮助!我对使用“git reset”做任何事情犹豫不决,因为重构非常重要,并且在 beta 中有很多我没有做的待定更改,所以我更担心搞砸重置并丢失代码比我担心必须从拉入的重构分支手动恢复提交。