// 查看当前工作区中文件的状态
// Untracked未跟踪,不被git管理的,通常为新创建的文件
// Changes to be not updated改变但未被暂存
// Changes to be committed改变被暂存但未被提交
git status
// 暂存区属于版本库,对应.git目录下的index文件,用于存放工作区中已修改且被add的文件
// 将被修改过的文件添加到暂存区
git add 文件名
// 修改过的文件add到暂存区后,提交暂存区内的文件到本地版本库的当前分支
git commit -m "提交说明"
// 提交暂存区内的文件以及暂存区外被修改且被跟踪的文件到本地版本库的当前分支
git commit -a -m "提交说明"
// 提交后暂存区的内容为空,若此时用户没有对工作区的文件进行修改,称当前工作区为状态
// 每次提交都会生成一个快照或版本,其以链表的形式链接起来,每次commit,对应链表添加一个快照结点
// 将分支名看成一个指针,其始终指向该分支最新一次commit的快照,head始终指向当前分支的分支名
// 输出当前版本到其之前的所有commit版本,每个版本都有对应的版本号id
git log
// 让head重定向到指定id的历史提交,历史提交称为最新版本,该提交之后的未来版本丢失
// HEAD^表示上个版本,HEAD^^表示上上个版本..,可HEAD~100前100个版本
// 参数mixed为默认值,只回退commit和add;soft只回退commit;hard回退commit、add、工作区
git reset --mixed/soft/hard HEAD^
// 若想回到未来的版本,输出用户之前的所有命令,找到用户以前commit操作的版本id
git reflog
// 做一次新的提交,提交的内容为指定id提交的反操作,以提交的方式删除之前的某次提交
// 通过此方式从最新提交版本的id开始,依次删除之前的提交达到回滚的目的
// 虽然繁琐,但此方式不会丢失历史,建议使用此方式回滚
git revert --no-commit id