文章目录
1. Git放弃未提交的文件修改
- 放弃工作区修改 (未使用git add)
- 不保留修改,无法恢复
git checkout -- <文件名> // 某个文件
git checkout -- . // 所有文件
- 放弃暂存区修改(已使用git add)
- 移回工作区,保留工作区中的修改
git reset HEAD <文件名>
- 放弃所有更改 (工作区和暂存区都恢复到上一次提交的状态,无法恢复)
git reset --hard HEAD
- 清理未跟踪文件 (删除工作区中未使用git add的所有文件, 无法恢复)
git clearn -fd
2. Git撤回已经提交(commit)的文件
未推送到远程仓库
- 软重置(撤销最近一次提交,保留修改在暂存区)
git reset --soft HEAD~1
- 混合重置 (撤销最近一次提交,保留修改在工作区)
git reset HEAD~1
- 硬重置 (撤销最近一次提交,丢弃所有更改,无法恢复)
git reset --hard HEAD~1
- 回退到指定提交版本,并保留工作区和暂存区的修改 (先用git log查看提交历史)
git log
git reset --soft <commit id>
已推送到远程仓库
- 先撤销本地提交,再更新远程仓库
git reset --hard HEAD~1
git push origin <分支名> --force-with-lease
3. Git 撤回已经push的文件
方法一:git revert
保留提交历史,提交历史中会新增一个提交记录
- 先查看提交历史,找到想要撤销的提交的哈希值(commit id)
git log
- 撤销提交
git revert <commit id>
- 将撤销提交推送到远程仓库
git push origin <分支名>
方法二: git reset
删除指定的提交及之后的提交记录
- 查看提交历史
git log
- 撤销指定提交及之后的提交记录
git reset --hard <commit id>
- 强制推送
git push -f origin <分支名>