Skip to content

Latest commit

 

History

History
97 lines (72 loc) · 2.45 KB

撤销.md

File metadata and controls

97 lines (72 loc) · 2.45 KB

工作区的改动舍弃,缓存区的改动保留,将工作区保持到和缓存区相同状态

  • 如果我对工作区的更改不满意,不想要了
# 工作区的选定文件的改动舍弃,缓存区的改动保留
git checkout -- <文件路径>

# 如果与分支名不冲突,可简写,不推荐
git checkout <文件路径>

# 工作区的改动全部舍弃,缓存区的改动保留
git checkout -- .

缓存区的改动退回到工作区,缓存区保持到和 HEAD 相同状态

  • 如果我不小心把不想提交的更改 add 到了缓存区
# 缓存区的选定文件的改动覆盖到工作区
git reset --mixed HEAD -- <文件路径>
# 简写
git reset HEAD -- <文件路径>
git reset -- <文件路径>

# 缓存区的改动全部覆盖到工作区
git reset --mixed HEAD -- .
# 简写
git reset HEAD -- .
git reset HEAD --
git reset HEAD
git reset -- .
git reset --
git reset
  • 注意
git reset HEAD^
#
git reset HEAD
# 有区别,注意区分

缓存区和工作区的改动全部舍弃(粗暴版)

  • 慎重操作,本操作会将缓存区和工作区的改动扔到黑洞,找都找不回来,本操作不能操作单个文件
# 缓存区的改动全部覆盖到工作区
git reset --hard HEAD
# 简写
git reset --hard

缓存区和工作区的改动全部舍弃(没那么粗暴版)

# 第一步 缓存区的改动覆盖到工作区
git reset

# 第二步 工作区的改动舍弃,缓存区的改动保留,将工作区保持到和缓存区相同状态
git checkout -- .

重新进行最后一次提交

# 更改提交信息
git commit --amend -m '新的提交信息'

# 打开编辑器更改提交信息
git commit --amend

# 不更改提交信息
git commit --amend --no-edit

按顺序撤销提交

  • 注意:如果你对 git 不是很熟练,执行此操作时,请确保你的工作区和缓存区是干净的
# 撤销最后一次提交,并将最后一次提交所做的更改覆盖到工作区
git reset --mixed <HEAD^|hash值>
# 简写
git reset <HEAD^|hash值>

# 撤销最后一次提交,并将最后一次提交所做的更改覆盖到缓存区
git reset --soft <HEAD^|hash值>

# 撤销最后一次提交,并将最后一次提交所做的更改舍弃,只能通过git reflog查询
# 相当于扔进垃圾桶,你虽然有办法找回,但是如果并不是真的要删,可以创建backup分支
git reset --hard <HEAD^|hash值>