Git常用撤销操作
基本状态标识
- A- = untracked 未跟
- A = tracked 已跟踪未修
A+ = modified - 已修改未暂存
B = staged - 已暂存未提交
C = committed - 已提交未PUSH
各状态之间变化
A- -> B : git add <FILE
- B -> A- : git rm --cached <FILE>
- B -> 删除不保留文件 : git rm -f <FILE>
A -> A- : git rm --cached <FILE>
- A -> A+ : 修改文件
- A+ -> A : git checkout -- <FILE> 。
git checkout -- .
则是撤销所有已track但未提交的文件修改 - A+ -> B : git add <FILE>
- B -> A+ : git reset HEAD <FILE>
- B -> C : git commit
- C -> B : git reset --soft HEAD^
- A- -> X: git clean -df 。删除新增的未track的文件。
- 修改最后一次提交: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忽略的文件
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:hwclouds.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
- 点赞
- 收藏
- 关注作者
评论(0)