Git
新建版本库
git init [projectName]
增删改
删除文件,工作空间不保留,可revert
git rm [fileName1] [fileName2]
停止追踪指定文件,工作空间保留文件,可revert
git rm --cached [file]
重命名,效果等价于add一个新文件,可revert
git mv [file-original] [file-renamed]
提交
提交更改,执行后进入vim输入message
git commit -a
补交,有更改则用更改替换上次提交,没有更改,则可以更改上次提交信息
git commit --amend -m [message]
查看信息
显示commit历史,以及每次提交的更改信息
git log --stat
显示指定文件相关的每一次diff
git log -p [file]
历史版本/撤销
- 撤销更改,恢复到特定版本,版本库不变,若存在未提交更改,则会被指定版本覆盖
git checkout SHA-1 [fileName]
- 重置当前分支到历史版本,同时重置暂存区,但工作区不变,现有更改保留
git reset SHA-1
- 重置当前分支到历史版本,同时重置暂存区和工作区,现有更改被覆盖
git reset --hard SHA-1 # 此处SHA-1等价于使用head回退,针对性好
- 重置当前HEAD为指定commit,但保持暂存区和工作区不变
git reset --keep [commit]
撤销未提交的更改
撤销也可以理解为恢复到最新版本.
git checkout head 1.txt 2.txt # 撤销少量文件的更改
git chechout head *.txt # 撤销所有.txt文件的更改
git checkout head . # 撤销目录下所有未提交的更改
git checkout . # 撤销目录下所有未提交的更改
git reset --hard # 撤销目录下所有未提交更改
git reset --hard head # 撤销目录下所有未提交更改,当使用head^时,则会版本回退
特殊记忆
整个工作空间切换到历史版本:
git checkout head^^
在本地存在未提交的更改时,上述命令不会执行.能够执行的前提下,整个版本库都会回退到历史版本,log也只到该版本.
查看某个文件的历史版本:
工作空间的文件会被历史版本覆盖,未提交的内容会丢失
git checkout SHA-1 [fileName] # 本地有未提交的更改会被覆盖,但不会影响版本库
git reset [file] # 有病啊这个
git reset SHA-1 [fileName] # 有病啊这个
历史版本另存为一个文件:
git show SHA-1:[fileName] > [newFileName]
将某文件的更改详情存为文件
git show SHA-1 [fileName] > [newFileName]