如何还原我的rebase?我在当地分公司(abc),并希望它用起源来重新定位它。以下是我发布的命令:
git checkout live
(On branch live)
git pull
在此之后,我想我忘记切换回我当地的分行' abc'然后我就开始对它进行调整,当我跑出“git status'命令,我意识到我在本地重新设置了分支。
git status
On branch live
Your branch is ahead of 'remotes/origin/live' by 13 commits.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
我不想推送任何东西,但想要删除它显示的那13个提交。这样做的正确方法是什么?
答案 0 :(得分:3)
您可以使用git reset --hard <SHA>
返回原始状态。我会建议先创建一个实验分支。
另请阅读并查看以下文档 - http://git-scm.com/docs/git-reset
答案 1 :(得分:2)
通常,请阅读git reflog
以确定要重置的位置。
在这种情况下,您似乎知道要重置为origin/live
(但要检查git log origin/live..live
以确定)。
一旦您知道自己要重置的内容,请运行git reset --hard commit-to-reset-to
,在这种情况下git reset --hard origin/live
。
答案 2 :(得分:1)
使用git reflog
命令显示当前分支的reflog。这是本地维护的数据,具有本地分支指向的每个提交的历史记录。您可以使用此数据查找本地分支在rebase之前指向的提交。
如果重新定位是您执行的最后一次操作,那么git reset --hard HEAD@{1}
应撤消此操作(并且它还会放弃您对工作树所做的任何更改)。