1.常用概念
工作区(工作代码):现在的代码,包括了在之前提交基础上的增删改查操作
未修改:代码自上次提交未修改
未追踪(untracked):新建的文件|被.gitignore忽略的文件(未纳入git版本控制),可通过git add . 纳入版本控制,变为已追踪状态
已追踪(tracked):被纳入git版本控制中的文件(新创建的文件被git add .即可被追踪|已经存在的已追踪文件就是已追踪状态)
未暂存(unstaged):修改了的文件
已暂存(staged):git add . 添加的未暂存文件
已提交:通过git commit -m ‘xxxx’ 提交的文件,提交后所有已追踪的文件将变为未修改状态(不是未暂存也不是已暂存状态)
上次提交:上次commit后的代码
2.常用撤回命令
以下的 . 均可以用文件名替代
-
对于已追踪的文件
git restore --staged . //将文件(未暂存/已暂存) 退回到未暂存状态 但保留所有修改 git restore . //将文件(未暂存/已暂存) 退回到未修改状态 并撤回所有修改 git checkout . //将文件(未暂存/已暂存) 退回到未修改状态 并撤回所有修改(与git restore . 完全相同)
-
对于未追踪的文件 (即新建的文件)
git clean -n 查看要删除的未追踪文件 git clean -f 删除所有未追踪文件
3.常见实用环境汇总
-
回到上次提交的代码(即我这次一顿乱写进行的修改全不想要了,想全不保存,想回到最初的起点)
git reset --hard 或 git checkout .
-
回到某次提交的代码,但想保留我这次进行的所有修改(即由于我很菜,进行了很多次提交,不想再要中间这些提交了,比如我为了改一个bug提交了40次,但最后推到远程我只想显示有一次提交)
git log //查看一下你想回到的那次提交的hash git reset --soft 你查到的hash值
-
新建了某个文件,显示未追踪,但是不想要了
git clean -n git clean -f
-
不小心对某个文件进行了修改,想让它变回未修改时(上次提交)的样子。(或者当你要提交的文件很多时,发现某个文件不应该被改变但不知道什么时候改了,不该提到线上)
git checkout filepath //filepath是你想撤回的文件路径
-
想回到git add .前的状态,即未暂存的状态,但是保存现在更改的代码
git restore --staged .