我的同事昨天遇到了麻烦。他移动master
约{100}次提交origin/master
(我不确定他是怎么做的,可能是with this),然后他承诺了。结果是master
现在处于他的新提交状态,之前的提交是origin/master
之后的100次提交。它看起来像这样:
master *
|
| * origin/master
| *
... ~one hundred commits below
| *
\ *
\
*
我对如何解决这个问题并不感到自信,所以我们这样做的方法是扔掉回购并再次克隆它。解决这个错误的正确方法是什么?
他的意图是在hotfix
之前创建一个名为origin/master
100个提交的新分支,并将这些更改提交给它。我认为他根本不想移动master
。
我会尝试解决这个问题:
git checkout master
git branch hotfix
#still on master
git reset --hard HEAD~1
git branch -f master <commit of origin/master>
答案 0 :(得分:1)
我只是创建了一个名为hotfix
的分支,并将master
重置为origin/master
:
$ git checkout master
$ git branch hotfix
$ git reset --hard origin/master
答案 1 :(得分:0)
免责声明:我不是git专家。这是我能想到的最好的。
首先,创建一个包含现有修订的新分支:
git checkout -b oops <commit-id>
然后,切换回master并删除所选的提交:
git checkout master
git rebase --onto <commit-id>^ <commit-id>