【发布时间】:2023-03-06 13:17:02
【问题描述】:
我不确定这是否是重复的,因为它是一种一次性的场景:
我有一个“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"} ,但问题是这让我进入了 outdated 本地测试版版本,而不是在我应该发布合并之前应该是最新版本先做 git pull 。我觉得应该有一种方法可以像git reset --hard origin/beta@{"1 hour ago"} 那样在 1 小时前重置到 remote beta 分支@,然后执行git merge refactor?我是否能够推送这些更改并确保远程提交被覆盖?
提前感谢您的帮助!我对使用“git reset”做任何事情犹豫不决,因为重构非常重要,并且在 beta 中有很多我没有做的待定更改,所以我更担心搞砸重置并丢失代码比我担心必须从拉入的重构分支手动恢复提交。
【问题讨论】:
标签: git git-merge git-push git-pull git-reset