常用撤销操作
常用撤销操作
基本状态标识
A- = untracked 未跟踪
A = tracked 已跟踪未修改
A+ = modified - 已修改未暂存
B = staged - 已暂存未提交
C = committed - 已提交未PUSH
各状态之间变化
C -> B : git reset --soft HEAD^ (soft模式下,重置后变更文件放入暂存区)
B -> A+ : git reset HEAD <FILE> (默认是mixed模式,重置后变更文件放入工作区)
A+ -> A : git checkout -- <FILE> 。
git checkout -- .
则是撤销所有已track但未提交的文件修改。A -> A- : git rm --cached <FILE>
A- -> B : git add <FILE>
B -> A- : git rm --cached <FILE>
A- -> X: git clean -df 。删除新增的未track的文件。
B -> 删除不保留文件 : git rm -f <FILE>
A -> A+ : 修改文件
A+ -> B : git add <FILE>
B -> C : git commit
修改最后一次提交:git commit --amend
revert撤销
git revert 撤销某次操作并提交一个新版本。将需要revert的版本的内容再反向修改回去,版本会递增。此次操作之前和之后的commit和history都会保留,并且把这次撤销,作为一次最新的提交。
revert可以针对历史中任何一个提交。
git revert HEAD //撤销前一次 commit
git revert HEAD^ //撤销前前一次 commit
git revert commit_id //(比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
reset重置
回退到某一版本。提交记录也会被撤销。
reset只能从当前提交向前回溯。
git reset <file> //从缓存区移除特定文件
git reset //取消所有文件的缓存,但不会撤销对文件的修改
git reset --hard //清除所有未提交的更改
git reset <commit> //将缓冲区重设到某个提交,但所有<commit>之后的更改还保留在工作目录中
git reset --hard <commit> //将缓冲区和工作目录都重设到这个提交,清除了<commit>之后的所有更改。
git clean
git clean
命令将未跟踪的文件从你的工作目录中移除。
git clean
是无法撤消的。
git clean
命令经常和 git reset --hard
一起使用。记住,reset 只影响被跟踪的文件,所以还需要clean来清理未被跟踪的文件。
git clean -n //不会真的执行删除,而是告诉你哪些文件会被删除
git clean -f <path> //-f强制删除的标记在移除文件时必须存在
git clean -df //移除文件及目录
git clean -xf //移除当前目录下的文件,以及git忽略的文件
- 点赞
- 收藏
- 关注作者
评论(0)