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指针指到指定提交,历史记录中不会出现放弃的提交记录。
参考资料