Github撤销更改,用于记录与分享,共勉。
有时我们在使用GitHub的时候,修改了一部分内容,但是我们发现思路不符合,但是文件已经修改了很多,不可能一一返回修改,此时我们需要恢复到上次提交内容。
场景1:
需要撤销的内容文件属于未跟踪的状态,即只修改但是没有运行git add 和commit命令的情况。
运行git status查看类似以下状态:
撤销修改的方法:
git checkout .
会自动恢复到最近一次提交的状态,也就是修改前的状态。
情景2:
需要撤销的内容已经运行过git add命令,但是未执行git commit命令提交。
撤销修改的方法:
git reset
git checkout .
git reset命令会删除暂存的更改,即与情景1类似;git checkout .命令恢复已经修改的文件。
情景3:
需要撤销的内容运行了git add命令和git commit命令。
我们新建一个test.c文件来测试。
解决方法:
git reset --hard HEAD^
这样会直接恢复到上次提交的状态,原来新建的文件会直接被删除,修改的文件也会被复原。
如果只是想撤销提交,不想删除本地文件,可以使用以下方法:
git reset --soft HEAD^
这样操作后就只是撤销了commit修改的内容依然是可以保留的。恢复到情况2的情况。
HEAD^:表示上一个版本,即上一次的commit,也可以写成HEAD~1。
如果是进行两次commit,都想撤回,那么可以使用HEAD~2。
--soft:不删除工作空间的改动代码 ,只撤销commit,不撤销git add file。
--hard: 删除工作空间的改动代码,撤销commit且撤销add。
情景4:
需要撤回的内容已经push推送到远程服务器,即已经可以在GitHub网页上看到修改的内容。但是发现内容有错误的地方,需要撤销上次推送的内容并且改正。
解决方法:
1.先撤回commit提交
git reset --soft HEAD^
2.撤销add跟踪
git reset HEAD + 文件名
或者撤销全部add的文件:
git reset
3.重新修改文件后重新提交:
git add .
git commit -m “注释:重新提交的正确内容”
4.强制推送
git push --force
参数--force为强制推送,这样操作后,就可以到GitHub网页上看,之前错误的提交已经被重新提交的正确内容取代。
到此,GitHub撤销更改的操作已经完毕。
此文是自我学习的记录与分享,如果文中有不对的地方,请不吝留言指正,感谢大家。