赞
踩
git reset --hard HEAD^
回退一步,即回退到上一次提交," ^ "的数量代表回退的步数;
git reset <commit id>
回退到指定commit id的一次提交
背景:需要把丢弃的版本恢复回来,但是已经没有任何分支能够reference到这个commit了;
分析:git 对各个分支的head还有一份log记录叫做reflog,你可以在.git/logs/refs/heads/ 目录下看到它们。 通过 git reflog 可以显示变更历史。使用类似 master@{1} master@{“2 days ago”}之类的格式,就能索引到你想要的commit
示例:git reset <commit id>【注意:reflog中的commit id只记录了id的前7位字符】
(1)git reflog 查看reflog上记录的commit log;
(2)git reset <commit id> 回退到指定commit id
背景:在(no branch)分支上提交(push)了,然后不小心从(no branch)branch切换到其他分支了,用git log查找不到(no branch)的提交信息了;
(1)git reflog 查看所有提交记录,查找(no branch)分支上的commit
(2)git checkout -b backup <commit id> 回退指定提交记录;
若代码已经push到远程仓了,可以在Gerrit上通过 "rebase" 操作将该提交rebase到正确的分支上;
若该代码已经Abandoned了,可以先通过 "Restored" 操作将该提交记录恢复到远程仓,再进行rebase操作
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。