git 代码回滚_能提交到远程的Git回滚

git 代码回滚_能提交到远程的Git回滚_第1张图片

很多情况下我们需要回滚代码,最容易想到的就是git reset。但是git reset有个弱点,它是一个彻底的回滚,不能再提交给远程了,因为在提交记录里回滚点之后的记录都不见了。

git 代码回滚_能提交到远程的Git回滚_第2张图片

做一下试验,一个文件我们提交了三次之后回滚

#往前回滚两次的提交

git 代码回滚_能提交到远程的Git回滚_第3张图片

回滚完成之后用git log命令查看发现只有第一次提交的记录了,这个时候如果推送到远程,远程git库肯定是拒绝的,因为此时它已经拥有了第三次的提交,毕竟曾经沧海难为水。如果拥有force权限,也可以霸王硬上弓,使用

git push -f

来强制覆盖,但大多数情况下开发者没有权限同时也不推荐这么做。

这个时候git revert就要上场了。它和reset的区别在于,它会新生成一个提交,它的方向是向前,而git reset的方向是向后。

尝试往前回滚一个commit

git revert HEAD

会直接弹出编辑提交信息的vi,同时内容直接更新

git 代码回滚_能提交到远程的Git回滚_第4张图片

查看git log,可以看到多出来一个提交记录了

git 代码回滚_能提交到远程的Git回滚_第5张图片

也可以使用提交的hash,回到的是这个hash的提交之前的状态

git revert 64c0

git 代码回滚_能提交到远程的Git回滚_第6张图片

提示有冲突,其实就是根据之前的提交里的文件内容与当前的文件内容做了一次merge,当然就是有冲突了

git 代码回滚_能提交到远程的Git回滚_第7张图片

解决冲突后即可提交,现在这个本地git推送给远程就不再会被拒绝了,最终终于实现了除却巫山不是云。

你可能感兴趣的:(git,代码回滚,git,回滚,git,回滚代码,git,回滚提交,git,提交,git,新建本地分支并提交到远程)