三个区
- 工作区(working tree):本地编辑器
- 暂存区(index):git add操作后进入暂存区,可用git status查看
- 本地仓库(repository):git commit 后进入本地仓库
编辑commit message (还没push)参考这一篇:
回撤commit
执行commit后,还没执行push时,想要撤销这次的commit:
git reset --soft HEAD^
想要连着add也撤销的话,–soft改为–hard(删除工作空间的改动代码)
命令详解:
1、HEAD^
表示上一个版本,即上一次的commit,也可以写成HEAD~1,如果进行两次的commit,想要都撤回,可以使用HEAD~2
2、–soft
不删除工作空间的改动代码 ,撤销commit,不撤销git add file
3、–hard
删除工作空间的改动代码,撤销commit且撤销add
如果已经push上去,需要做多几个步骤:
回撤push
回撤远程的代码,理解为本地回撤到之前的版本,修改好之后,再次push到远程;
这个过程分为两步:回撤+push
本地reset到无问题commit
1、执行
git log
查看日志,获取需要回退的版本号
2、执行
git reset –-soft <版本号>
如:
git reset --soft 4f5e9a90edeadcc45d85f43bd861a837fa7ce4c7
重置至指定版本的提交,达到撤销提交的目的,本地回撤之后,修改对应的代码;之后再提交:
git push origin <分支> --force
使用这个命令行的原因是,本地的版本已经回撤,但是远程的版本还没有,版本号落后远程的版本号,所以要“强制”推送。
总结
回撤commit,分为几种:
- 修改message:git commit --amend
- 回撤commit: git reset --soft HEAD^
- 回撤push:需要本地回撤版本之后修改再强制提交