情况1:由于操作失误,需要将push的代码进行版本回退,首先在本地仓库执行了“git reset - -hard HEAD^”命令,这样只会回退本地仓库的代码,但是我的代码之前已经push到了远程库中,查看远程仓库,发现并没有回退,怎么办呢,经过实际操作,通过以下方法可以达到效果:
1:首先在本地分支执行“git reset - -hard HEAD^”,将版本会退到以前。这里的“HEAD^”只是回退到上一个版本,如果要回退到更早的版本,可以通过“git log或git log - -pretty=oneline”命令从日志中查看某次提交的commit id,然后通过“git reset - -hard commitId”将代码回退到指定的版本。
2:这时候只是本地代码回退了,现在我们执行命令“git push origin master”,会出现一个失败,提示当前分支落后于远端分支,这是肯定的了,因为本地代码回退了嘛,此时我们要做的就是强制推送,通过执行命令“git push origin master - -force”来实现,然后查看远程库,发现远程版本也已经回退了。
注意:强制push的时候要保证本地代码是最新的,如果其他小伙伴们在此时进行了远程推送,那么会造成代码的丢失。
情况2:由于操作失误,需要将commit的代码进行版本回退。
使用git log命令显示从最近到最远的提交日志。
执行git reset - -hard HEAD^ 即可回退到上一个commit的版本。再执行一次git log就可以从commit id看出了。
回退上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
hard:强制回退
soft : commit的代码不会回退
情况3:由于操作失误,需要将add的代码进行版本回退。
执行git reset HEAD src/com/example/MainActivity.java 即可回退src/com/example/MainActivity.java文件。