常用撤销操作

举报
晴天X风 发表于 2018/03/14 20:33:38 2018/03/14
【摘要】 常用撤销操作基本状态标识A- = untracked 未跟踪A = tracked 已跟踪未修改A+ = modified - 已修改未暂存B = staged - 已暂存未提交C = committed - 已提交未PUSH各状态之间变化C -> B : git reset --soft HEAD^ (soft模式下,重置后变更文件放入暂存区)B -> A+ : git reset HEAD <

常用撤销操作


基本状态标识

  • 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忽略的文件




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。