Git:使用不正确的分支创建了热修复程序

Git:使用不正确的分支创建了热修复程序,git,Git,我有一个硕士班和一个发展班。我的生产环境使用master分支,而development分支通常提前几次提交 我需要为生产添加一个快速补丁。我通常会做的是: git签出主机 git checkout-b我的热修复程序 (进行修补程序更改并提交) git签出开发 git合并我的热修复程序 git签出主机 git合并我的热修复程序 在本例中,我无意中忘记了步骤1,这意味着在创建热修复程序时我在开发分支上。直到最后一步,我才意识到这一点,并将热修复程序合并到master中。我没有得到一个小小的改变,

我有一个硕士班和一个发展班。我的生产环境使用master分支,而development分支通常提前几次提交

我需要为生产添加一个快速补丁。我通常会做的是:

  • git签出主机
  • git checkout-b我的热修复程序
  • (进行修补程序更改并提交)
  • git签出开发
  • git合并我的热修复程序
  • git签出主机
  • git合并我的热修复程序
在本例中,我无意中忘记了步骤1,这意味着在创建热修复程序时我在开发分支上。直到最后一步,我才意识到这一点,并将热修复程序合并到master中。我没有得到一个小小的改变,而是收到了来自develope分支的一些先前的提交

我该如何扭转这种局面?请注意,我还没有将更改推到上游


注意:关于意外合并还有其他问题。我的问题不止于此-这是因为我正在合并的分支是从错误的分支创建的。

如果不推送更改,您可以使用git reset命令取消提交,以在正确的分支上进行提交:

# in the output of next command, spot the commit you know is good and store its hash ID, let's call it <commit_hash_OK>
git log -10 --oneline master

# in the output of next command, spot the NEW hotfix commit and store its hash ID, let's call it <commit_hash_NEW>
git log -10 --oneline my-hot-fix

# we need to reset master to its previous state
git checkout master
git reset --hard <commit_hash_OK>

# finally, put onto master only the commit you needed
git cherry-pick <commit_hash_NEW>
#在下一个命令的输出中,找出您知道是好的提交并存储其哈希ID,让我们调用它
git日志-10——单线主控
#在下一个命令的输出中,找到新的修补程序提交并存储其散列ID,让我们调用它
git日志-10——oneline我的热修复程序
#我们需要将主机重置为以前的状态
切换到主分支
git重置——硬
#最后,只向master提交您需要的提交
吉特樱桃采摘

然后,您将被设置为本地,只需像往常一样按一下即可。

您最好的选择是简单地重置
主控
开发
上的更改,以与远程同步。因此,假定您的遥控器被称为
原点

git签出主机和&git重置——硬原点/主机

git签出开发和&git重置--硬源代码/开发

然后,这次您可以从master创建一个新的热修复程序分支,并
git cherry pick
您想要的提交,如下所示:

查找提交哈希:

git记录我的热修复程序

然后:

git cherry pick MY_COMMIT_HASH

然后可以从步骤4(git签出开发)开始继续


你很幸运,因为你还没有推。如果您曾经被卡住并且想要恢复本地更改,您可能还需要查看
git reflog
命令。它真的很强大

参考这个:可能的重复事实上,我们可以对它进行投票。仅供参考,我必须使用origin/master和origin/develope(非origin-master,origin-develope)。可能有助于更新您的答案。谢谢@KimPrince,我的拼写错误,将修复:)