首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git:使用不正确的分支创建热修复程序。

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

Stack Overflow用户
提问于 2018-11-21 10:16:07
回答 3查看 102关注 0票数 2

我有一个主分支和一个发展分支。我的生产环境使用的是主分支,而开发分支通常是几个提前提交的。

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

  • git结账母版
  • git结帐-b我的热修复
  • (使我的修补程序更改,并提交它们)
  • git结帐开发
  • git合并了我的热修复程序
  • git结账母版
  • git合并了我的热修复程序

在这种情况下,我意外地忘记了步骤1,这意味着我在开发分支时,我创建了我的热修复。直到我走到最后一步,我才意识到这一点,并将热补并入大师。我没有得到一个小的更改,而是从开发分支收到了一些先前的提交。

我怎么才能扭转这一切?请注意,我还没有把这些变化推到上游。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-21 10:26:09

您最好的选择是简单地将masterdevelop上的更改重置为与远程同步。所以假设你的遥控器叫做origin

git checkout master && git reset --hard origin/master

git checkout develop && git reset --hard origin/develop

然后,您可以从master创建一个新的修补程序分支,并按如下方式对提交进行git cherry-pick

找到提交哈希:

git log my-hot-fix

然后:

git cherry-pick MY_COMMIT_HASH

然后,您可以从步骤4 (git签出开发)开始。

你很幸运,因为你还没用力。如果您曾经陷入困境,并且希望恢复本地更改,您可能也希望查看git reflog命令。它真的很强大https://git-scm.com/docs/git-reflog

票数 2
EN

Stack Overflow用户

发布于 2018-11-21 10:25:50

为了让你在正确的分支上做出承诺:

代码语言:javascript
复制
# 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>

然后你就会被设定在当地,就像往常一样推。

票数 2
EN

Stack Overflow用户

发布于 2018-11-21 10:25:50

如果未按下更改,则可以使用git reset命令取消提交

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53409787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档