github 使用小结2(各阶段撤销)

git 各阶段就不一一介绍了,可以看之前的blog:https://blog.csdn.net/yj310873325/article/details/79255134

主要介绍各阶段的撤销查询:

1.查看修改内容:

git diff (已修改,未暂存)

git diff --cached(已暂存、未提交)

git diff master origin/master(已提交、未推送) (master本地分支、origin/master远程分支)

2. 撤销修改内容:

2.1   已修改、未暂存

       git checkout .  或者git checkout 文件名 

       或者 git reset --hard 

git add .的反义词是git checkout .。做完修改之后,如果你想向前走一步,让修改进入暂存区,就执行git add .,如果你想向后退一步,撤销刚才的修改,就执行git checkout .。注意修改一部分确认没问题后,要及时执行git add . 否则reset后就会回到上一次add的地方,中间的修改就都没了。或者只checkout某一个文件名。

2.2 已暂存,未提交

先执行git reset 然后执行git checkout .

git reset只是把修改退回到了git add .之前的状态,也就是说文件本身还处于已修改未暂存状态,你如果想退回未修改状态,还需要执行git checkout .。

或者执行一步 git reset --hard

或许你已经注意到了,以上两个步骤都可以用同一个命令git reset --hard来完成。是的,就是这个强大的命令,可以一步到位地把你的修改完全恢复到未修改的状态。但是是全部内容,有点暴力,如果内容较少,可以修改单个文件内容。

2.3 已提交,未推送

你的手太快,你既执行了git add .,又执行了git commit,这时候你的代码已经进入了你的本地仓库,然而你后悔了,怎么办?不要着急,还有办法。

git reset --hard origin/master

还是这个git reset --hard命令,只不过这次多了一个参数origin/master,正如我们上面讲过的,origin/master代表远程仓库,既然你已经污染了你的本地仓库,那么就从远程仓库把代码取回来吧。


2.4已推送

很不幸,你的手实在是太快了,你既git add了,又git commit了,并且还git push了,这时你的代码已经进入远程仓库。如果你想恢复的话,还好,由于你的本地仓库和远程仓库是等价的,你只需要先恢复本地仓库,再强制push到远程仓库就好了:

git reset --hard HEAD^

git push -f



猜你喜欢

转载自blog.csdn.net/yj310873325/article/details/80703561