企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
## 工作区的改动舍弃,缓存区的改动保留,将工作区保持到和缓存区相同状态 * 如果我对工作区的更改不满意,不想要了 ```bash # 工作区的选定文件的改动舍弃,缓存区的改动保留 git checkout -- <文件路径> # 如果与分支名不冲突,可简写,不推荐 git checkout <文件路径> # 工作区的改动全部舍弃,缓存区的改动保留 git checkout -- . ``` ## 缓存区的改动退回到工作区,缓存区保持到和 HEAD 相同状态 * 如果我不小心把不想提交的更改 add 到了缓存区 ```bash # 缓存区的选定文件的改动覆盖到工作区 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 ``` * 注意 ```bash git reset HEAD^ # 与 git reset HEAD # 有区别,注意区分 ``` ## 缓存区和工作区的改动全部舍弃(粗暴版) * 慎重操作,本操作会将缓存区和工作区的改动扔到黑洞,找都找不回来,本操作不能操作单个文件 ```bash # 缓存区的改动全部覆盖到工作区 git reset --hard HEAD # 简写 git reset --hard ``` ## 缓存区和工作区的改动全部舍弃(没那么粗暴版) ```bash # 第一步 缓存区的改动覆盖到工作区 git reset # 第二步 工作区的改动舍弃,缓存区的改动保留,将工作区保持到和缓存区相同状态 git checkout -- . ``` ## 重新进行最后一次提交 ```bash # 更改提交信息 git commit --amend -m '新的提交信息' # 打开编辑器更改提交信息 git commit --amend # 不更改提交信息 git commit --amend --no-edit ``` ## 按顺序撤销提交 * 注意:如果你对 git 不是很熟练,执行此操作时,请确保你的工作区和缓存区是干净的 ```bash # 撤销最后一次提交,并将最后一次提交所做的更改覆盖到工作区 git reset --mixed <HEAD^|hash值> # 简写 git reset <HEAD^|hash值> # 撤销最后一次提交,并将最后一次提交所做的更改覆盖到缓存区 git reset --soft <HEAD^|hash值> # 撤销最后一次提交,并将最后一次提交所做的更改舍弃,只能通过git reflog查询 # 相当于扔进垃圾桶,你虽然有办法找回,但是如果并不是真的要删,可以创建backup分支 git reset --hard <HEAD^|hash值> ```