经历了一次错误的commit,想要撤回

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
git log # 查看上次commit的完整hash字串
git reset <arg1> <hash字串> # 撤回commit,<arg1>有参数--soft、--hard、--mixed可选,区别为
# --soft 文件还保存在git里,可以再reset回来
# 修改前 --> 修改后
# (F) (F)
# A-B-C A-B-C
# ↑ ↑
# master master
#
# --hard 文件直接被删去,慎用!!!
# 修改前 --> 修改后
# (F) (F)
# A-B-C A-B
# ↑ ↑
# master master
#
# --mixed 文件未被删去,就在本地workspace里,处于未被add的状态(推荐)
# 修改前 --> 修改后
# (F) (F)
# A-B-C A-B-C
# ↑ ↑
# master master
#
# 注:(F)指的是磁盘里此时实际的文件处于哪个版本

清除本地对远端已经不存在的分支的引用

1
git remote prune origin

说明

  • origin 是默认的远程仓库名称,如果有其他远程仓库,可以用相应的名字替换 origin
  • 该命令__不会删除本地的任何分支或数据__,只会移除本地对那些已经在远程仓库中删除的分支的引用。