执行git staus
命令
Modified 表示已修改未暂存
Unmodified 表示已提交到本地仓库
Staged 表示已经暂存
Untracked 表示未被跟踪,新生成的文件
解决方案:
(一)reset
1、不删除工作空间的改动代码 ,撤销commit,两者都保留commit前代码做的修改
git reset --soft HEAD^ //回到前一次提交的commit执行之前的状态
git reset --mixed HEAD~ //回到前一次提交的add执行之前的状态
2、删除工作空间的改动代码,撤销commit且撤销add,代码回到上一次提交的状态
git reset --hard HEAD^
3、如果commit注释写错了,先要改一下注释
git commit --amend
这时候会进入vim编辑器,修改完成你要的注释后保存即可。
命令 HEAD^ :
HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1
如果进行两次的commit,想要都撤回,可以使用HEAD~2
4、如果已经commit一次,但发现还有未commit 的代码,但又不想有两条commit语句
git commit --amend --no-edit
命令连接符 && 的意思是: 前一条命令执行成功才执行后一条命令。
扩展命令连接符 ;; 的意思是:不论前一条是否执行成功都继续执行后一条命令。
(二)revert
git revert <commit-id>
使用revert不会破坏历史记录,只是提交一个新的修改使修改后代码和以前一致。
实质上相当于用前的代码merge 后的代码,因此如果后面对代码文件做了修改需要解决冲突。
revert的主要麻烦:如果存在分支合并的情况,如下,从m1 revert到a2时会添加一个新的提交m2,当m2与b2 merge时会显示已经merge过.