繁体   English   中英

不知怎的,我的git develop分支被合并到我的主分支中

[英]Somehow my git develop branch got merged into my master branch

我正在使用git-flow,但这并不重要。 我的主分支是生产,我的开发分支是开发。

今天早上,我的主分支(这是我的产品发布)几周没有被触及(自我上次发布以来)。 现在,当我查看我的主分支时,它包含了我的开发分支的所有提交。

我没有在git log看到合并,所以我很困惑如何让我的主分支回到它无聊的自我。

如何找到这个rouge合并到我的主分支并反转它而不会丢失我的开发工作?

编辑:

这是否提供了足够的信息来了解发生了什么?

这是git reflog的输出:

0fe067c HEAD@{0}: pull: Fast-forward
300ba32 HEAD@{1}: checkout: moving from develop to master
06f1dd9 HEAD@{2}: pull: Fast-forward
0fe067c HEAD@{3}: commit: Add back prefix.
815ffe8 HEAD@{4}: pull: Fast-forward
f4c3e23 HEAD@{5}: pull: Fast-forward
93d1037 HEAD@{6}: pull: Fast-forward
e027c53 HEAD@{7}: commit: Don't commit changes to Prefix
96e37a9 HEAD@{8}: commit: Update URLs based on current server

好吧,如果合并已经快速转发,它将不会创建合并提交,这可能是发生的事情。

所以,从那里,我们去哪里?

好吧,如果你有一个指向良好提交的遥控器,你可以很容易地重置你的本地分支:

git reset --hard origin/master (其中remote/branch

否则,它有点复杂,但仍然:您可以过滤您的reflog以仅记录主信息:

git reflog show master

如果记录的信息有意义,那么您可以重置:

git reset --hard master@{1}

请注意--hard将丢弃对工作树所做的所有本地更改,如果这是一个麻烦,请使用--keep

你发布时是否标记了生产分支?

你对上一版的sha1有什么看法吗?

我喜欢Simon Boudrias的答案,但它可以像使用git log定位你想要的提交并将分支重置为提交git reset --hard <sha1>

注意:您可能希望在没有--hard部分的情况下重置,以确保它能够将您带到您想要的位置而不会丢失信息。

git co production
git log # find the sha1
git reset <sha1> # to check if this is the point you want
git co production
git reset --hard <sha1>

由于您没有从“开发”中删除任何提交,因此您不会丢失提交(只要没有人直接在生产中开发)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM