1、提交
git add -A //提交所有变化
git add -u //提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . //提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
2、git还原到某个版本
git reset --hard xxxxx //还原到某个版本
git push -f //强制推送
3、使用reset撤销commit、回退版本 【未推送到远程】
比如一个文件 1.txt 提交了三次
commit名 commitID 文件内容
commit3 003 test3
commit2 002 test2
commit1 001 test1
3.1 执行
git reset --hard 001
会发现变成如下
commit名 commitID 文件内容
commit1 001 test1
3.2 执行
git reset --mixed 001
会发现变成如下
commit名 commitID 文件内容
commit1 001 test3【红色,未add】
3.3执行
git reset --soft 001
会发现变成如下
commit名 commitID 文件内容
commit1 001 test3【绿色,已add】
总结:
执行 git reset --hard commitXId
会撤销此X提交之后的所有提交记录,而且文件的内容也会恢复到X提交时的状态 【硬重置- 撤销提交记录,文件内容全恢复到之前】
仅仅移动当前Head指针,不会改变工作区和暂存区的内容。
执行 git reset --mixed commitXId
会撤销此X提交之后的所有提交记录,而且文件的内容也会恢复到X提交时的状态 【混合重置- 撤销提交记录,文件内容全恢复到之前,但未add】
移动head指针,改变暂存区内容,但不会改变工作区。
执行 git reset --soft commitXId
会撤销此X提交之后的所有提交记录,但是文件的修改不会撤销,依然是最后的修改状态 【软重置- 撤销提交记录,文件不恢复,已add】
当前head指针、工作区和暂存区内容全部改变。
4、使用revert反做commit 【未推送到远程】
revert 目的是撤销某个版本的提交,但是又不影响后续其他版本的提交
比如 1.txt 文件,第一次提交内容是1,第二次提交内容是2,第三次提交内容是3
如果使用reset 001,提交记录只剩001
如果使用revert 001,提交记录是 001 002 003 004 【这里004的记录是由于,撤销001提交的文件 + 003提交的文件,两者合并生成新的提交记录004,此时应该注意合并冲突】