我用的是git流,但这不重要。我的主要部门是生产,我的开发部门是为了发展。
今天早上,我的主分支(这是我的产品发行版)已经有几个星期没动过了(自从我上次发布以来)。现在,当我看我的主分支时,它已经包含了我的开发分支的所有提交。
我在git log中没有看到合并,所以我很困惑如何才能让我的主分支回到它无聊的自我。
我如何找到这个胭脂合并到我的主分支,并逆转它,而不失去我的开发工作?
编辑:
这是否提供了足够的信息来知道发生了什么?
这是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发布于 2012-09-26 01:49:44
嗯,如果合并已经被快速转发,它将不会创建一个合并提交,这可能就是所发生的情况。
那么,从那里开始,我们该去哪里呢?
如果您的远程仍然指向好的提交,您可以很容易地重置您的本地分支:
git reset --hard origin/master (其中remote/branch)
否则,它会稍微复杂一些,但仍然可以:您可以将您的重发过滤为只记录主信息:
git reflog show master
如果记录的信息有意义,那么您可以重置:
git reset --hard master@{1}
请注意,--hard将放弃对工作树所做的所有本地更改,如果存在问题,请使用--keep。
发布于 2012-11-09 21:54:02
你发行的时候给你的生产部门贴上标签了吗?
你对上一个版本的sha1有任何了解吗?
我喜欢Simon的回答,但它可以简单到使用git log定位您想要的提交,并将分支重置为提交git reset --hard <sha1>。
注意:你可能想要重置没有
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>因为您没有从“开发”中删除任何提交,所以您不会丢失提交(只要没有人直接在生产中开发)。
https://stackoverflow.com/questions/12571507
复制相似问题