GIT 撤销与回滚

        git 相信大家都会用,但是大家有没有遇到过,不小心把不该提交的文件 commit 了

        小编整理了一些我在开发中常见的使用场景,供大家参考

场景一

        糟了,我刚把不想要的代码,commit到本地仓库中了,但是还没有做push操作

        这种场景称为撤销

1 文件被修改了,但是还没有 git add

git checkout fileName
# 或者直接撤销当前目录下的全部文件
git checkout .

2 对文件执行了 git add 操作,想撤销一部分文件

# 取消暂存
git reset HEAD fileName
# 撤销修改
git checkout fileName

3 修改的文件已经被 commit,但是不想产生新的 commit

# 修改最后一次提交
git add a.txt
git commit --amend -m "说明"

4 已经本地进行了多次 git commit 操作,现在想撤销其中某次 commit

git reset commit_id|HEAD

场景二

        彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码

        这种场景称为回滚

        注意:对远程仓库做回滚操作是有风险的,需提前做好备份和通知其他团队成员!

1 如果更新线上会打 tag,那么可以很快处理上述情况

git checkout <tag>

2 撤销指定文件到指定版本

# 查看指定文件的历史版本
git log <filename>
# 回滚到指定commitID
git checkout <commitID> <filename>

3 删除最后一次远程提交

# 使用 revert
git revert HEAD
git push origin master

场景三

        刚才我发现之前的某次提交太愚蠢了,现在想要干掉它

# 使用 reset
git reset --hard HEAD^
git push origin master -f

revert是放弃指定提交的修改,但是会生成一次新的提交,以前的历史记录都在;

reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

参考资料

Git撤销&回滚操作(git reset 和 get revert) - 云+社区 - 腾讯云俗话说,老虎也有打盹的时候。我们提交代码,也会有出错的时候。我今天不小心把不该提交的文件给提交了。icon-default.png?t=M276https://cloud.tencent.com/developer/article/1582800