Checkout最近创建了分支

时间:2014-05-01 03:49:30

标签: git version-control git-branch

因此。我已经做了一些奇怪的步骤来得到这个结果:

我们假设我们有一个名为dev的分支。我现在正在谈论它。

还有一个名为dev2的分支。该分支已经远程创建,但我本地没有。

所以,我所做的是git checkout -b dev2,它在dev2分支的顶部创建了一个名为dev的新分支。
在此之后,我刚刚做了git pull origin dev2,所以它得到了dev分支中的所有内容。
我收到一条消息说我必须解决一些冲突。所以我做到了。提交我的修复并推送它们。现在dev2分支不是远程之前的分支。

有没有办法让我心爱的dev2分支恢复到正常状态?

2 个答案:

答案 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