这一回,关于撤回的命令,不能再称之为常用命令了,工作这么多年了,第一次真正的使用
Git系列的目录如下:
Git常用命令整理一(Git stash)
Git常用命令整理二(Git托管项目)
Git常用命令整理三(Git配置)
Git常用命令整理四(Git删除文件)
Git常用命令整理五(Git疑难杂症)
Git常用命令整理六(创建分支的子分支)
Git常用命令整理七(稀疏检出)
Git常用命令整理八(忽略文件)
Git常用命令整理九(忽略跟踪)
Git常用命令整理十(优雅用法)
Git常用命令整理十一(各种撤回)
一、常用操作
1、撤销git stash pop
原因:git stash pop有冲突,太多不可解,需要撤销
git reset --hard
2、撤销git add操作
# 撤销全部add文件 git reset HEAD . # 撤销指定add文件 git reset HEAD -filename
3、撤销git commit操作
不删除工作空间改动代码,撤销commit,不撤销git add
git reset --soft HEAD^
4、关于git reset命令
–mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset –mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
–hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
5、小结
其实记住git reset –hard就够了
二、常见问题
1、执行git reset –hard后还是提示有本地文件没有纳入版本管理
salmonl@B-3BD9Q05P-2155 car-merchant-level % git reset --hard HEAD is now at 900f090 Merge commit 'ec95280b4a056136aa3146ec9572f69385fa496b' salmonl@B-3BD9Q05P-2155 car-merchant-level % git status On branch master Your branch is behind 'origin/master' by 13 commits, and can be fast-forwarded. (use "git pull" to update your local branch) Untracked files: (use "git add <file>..." to include in what will be committed) .idea/ diamond/ logs/ vendor/github.com/go-redis/redis/v7/.golangci.yml vendor/github.com/lestrrat-go/strftime/.golangci.yml vendor/github.com/vmihailenco/msgpack/v4/.golangci.yml vipsrv-cache/ vipsrv-logs/ nothing added to commit but untracked files present (use "git add" to track)
解法
# 先clean git clean -fd * git reset --hard HEAD^^^^
原因
TODO
git clean经常和git reset –hard一起结合使用. 记住reset只影响被track过的文件, 所以需要clean来删除没有track过的文件. 结合使用这两个命令能让你的工作目录完全回到一个指定的
思考
git reset –hard origin/master和git reset –hard HEAD^是不是一致
2、git reset后git push异常,提示error: failed to push some refs to ‘gitlab.alibaba-inc.com:AOS-OSS/car-merchant-management.git’
解法:git push origin branch –force 【参考: stackoverflow】
参考:
撤销git add【思否】
git-reset【git-scm】
Git reset命令的使用【简书】