撤销add操作
如果是在“Changes to be committed” 这行下面的,就说明是已暂存状态。也就是说这些文件被add过,但是没有commit。如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。但是这些文件是被.ignore忽略的,所以我们应该取消add。
git reset :可以将当前仓库回退到历史的某个版本
第一种用法:回退到上一个版本(HEAD代表当前版本,有一个^代表上一个版本,以此类推)
git reset --hard HEAD^
第二种用法:回退到指定版本(其中d7b5是想回退的指定版本号的前几位)
git reset --hard d7b5
git reset HEAD 路径/文件名: 对某个文件进行撤销
git reset HEAD :如果不指定文件名,则撤销add的所有文件
撤销文件修改
如果“Changes not staged for commit” 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。
git checkout -- 路径/文件名:撤销对该文件的修改
git checkout -- . :撤销对所有文件的修改
执行git commit 之后的撤销
git log:查看提交记录
git reset commitID :可以撤销,不对代码修改进行撤销,可以继续进行git commit提交修改
git reset --soft commitID :可以回退commit,代码属于git add 的那个状态,软重置,只回退commit信息,如果需要提交,继续 commit就行。
git reset --mixde commitID :和第一种情况一样,默认不写mixed就是第一种,只末流源码,回退commit和index信息,如果需要提交,还需要执行git add ,和 git commit,
git reset --hard commitID :什么都不要了,彻底回到上个版本.
执行 git push 之后
git revert commitID :会把此次操作之前和之后的commit都会保留,并把这次撤销作为一次新的commit
git reset 和 git revert 比较
git reset 是还原本地index的状态或者修改本地head的位置,一般适用于,比如我们本地有多个commit,比如1,2,3这时候我们不想要2,3,了,想从1,开始开发,然后新建一个分支,这时候就用git reset ,撤销那两次修改,然后继续开发,只影响本地,不影响远程,可以根据自己的需求选择软重置还是硬重置
git revert 是撤销push到远程的某次提交,用一次新的提交覆盖原来的修改。
网友评论