因此。我已经做了一些奇怪的步骤来得到这个结果:
我们假设我们有一个名为dev
的分支。我现在正在谈论它。
还有一个名为dev2
的分支。该分支已经远程创建,但我本地没有。
所以,我所做的是git checkout -b dev2
,它在dev2
分支的顶部创建了一个名为dev
的新分支。
在此之后,我刚刚做了git pull origin dev2
,所以它得到了dev
分支中的所有内容。
我收到一条消息说我必须解决一些冲突。所以我做到了。提交我的修复并推送它们。现在dev2
分支不是远程之前的分支。
有没有办法让我心爱的dev2
分支恢复到正常状态?
答案 0 :(得分:2)
如果另一个分支dev2
已被其他人推送,那么在本地获取它的方式是(在:
git checkout master
git branch -d dev2
git fetch
git checkout -b dev2 origin/dev2
第二个命令删除' dev2
'你做过的分支,因为你还没有合并任何东西:你只需要获取并引用dev2
。
稍后,您可以将dev2
合并到dev
,然后解决合并冲突。
注意:如果你已经(如在git push --force dev2
中)推回到上游仓库,这将无法工作。
答案 1 :(得分:1)
您可以检查要回滚到的远程控制器上的哪个提交,然后硬重置为
git log origin/dev2 # See history on remote
从此命令的输出中,确定要返回的提交(例如,3157ee3718e180a9476bf2e5cab8e3f1e78a73b7)
然后回滚到该提交并更新远程
git checkout dev2 # Go to branch dev2
git stash # Discard your current changes
git reset --hard <hash> # Reset to the state of the hash
git push --force origin dev2 # Forcefully update the remote