工作区的改动舍弃,缓存区的改动保留,将工作区保持到和缓存区相同状态
# 工作区的选定文件的改动舍弃,缓存区的改动保留
git checkout -- < 文件路径>
# 如果与分支名不冲突,可简写,不推荐
git checkout < 文件路径>
# 工作区的改动全部舍弃,缓存区的改动保留
git checkout -- .
缓存区的改动退回到工作区,缓存区保持到和 HEAD 相同状态
# 缓存区的选定文件的改动覆盖到工作区
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值>