一、撤销add命令

1、单个文件

git reset HEAD  -filename

2、多个文件,只撤销部分文件

git reset HEAD 将file退回到unstage区

3、如果是撤销所有的已经add的文件:

git reset HEAD .

二、git rm 与 git reset的区别

  1. git rm:用于从工作区和索引中删除文件
  2. git reset:用于将当前HEAD复位到指定状态。一般用于撤消之前的一些操作(如add,commit等)。
  3. git rm file_path删除暂存区和分支上的文件,同时工作区也不需要
  4. git rm --cached file_path 删除暂存区或分支上的文件, 但工作区需要使用, 只是不希望被版本控制(适用于已经被git add,但是又想撤销的情况)
  5. git reset HEAD 回退暂存区里的文件

三、取消commit命令

git reset --soft HEAD^

--HEAD^

指上一个版本,也可以写成HEAD~1(HEAD~2回退2个commit)

--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--mixed
不删除工作空间改动代码,撤销commit,并且撤销git add .
(git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的)。
--hard
删除工作空间改动代码,撤销commit,并且撤销git add ,回退版本

commit修改注释

git commit --amend

四、取消merge命令

 git revert -m 【要撤销的那条merge线的编号】 【merge前的版本号】
# 1 commit  之前的撤销
 
未添加至暂存区的撤销(add 之前)
git status
git checkout .
 
已添加至暂存区的撤销(add 之后,有或者没有commit操作都可以执行)
git reflog
git reset --hard  bca6882(relog 中展示的commitId)
 
# 2 push之后的撤销
 
push操作后的撤销不想将本次的操作生效
 
git revert  commitId(提交的id)
 
git push origin brandname 此次操作就会撤销掉上一次的push
会生成一条revert 的提交记录
 
 将userName 改为username 经过一系列的git操作
 git add .
 git commit -m "commit"
 git push orgin
 进行git revert commitId
 再进行git push origin branchname
 userName 还是userName,
 再revert 的时候,
 git revert
 git push origin branchname
 userName 还是改为username.
 
总结为:
 git revert 为奇数时生效,为偶数时,失效
 
# 3 git 回滚:
git 回滚到某一次commit操作,在该commitId之前的操作,将全部失效(此方法不建议使用,有风险),
git reset --hard commitId
 
git push  origin branchname --force   (强制覆盖,因为是不可逆的,不建议使用)
 

五、参考

CSDN博客_git 取消merge

git的撤销操作SegmentFault 思否

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐