git指令速查
git指令速查
OHNIIGit_丢弃工作区跟暂存区的修改
丢弃工作区的修改 / git restore
🚨 永久丢弃修改,无法恢复, 谨慎使用
丢弃单个文件的修改
1
git restore <file_path>
示例:
1
git restore src/permission.js
丢弃多个文件的修改
1
git restore <file_path1> <file_path2>
示例:
1
git restore src/permission.js src/router.js
丢弃所有文件的修改
1
git restore .
丢弃暂存区的修改 / git restore –staged
🚨 将暂存区的文件移回工作区,保留工作区的修改
取消暂存单个文件
1
git restore --staged <file_path>
示例:
1
git restore --staged src/permission.js
取消暂存多个文件
1
git restore --staged <file_path1> <file_path2>
示例:
1
git restore --staged src/permission.js src/router.js
取消暂存所有文件
1
git restore --staged .
Git_提交与撤销提交-reset
创建提交 / git add & git commit
- 提交所有修改
1 | git add . |
- 提交指定文件
1 | git add <file> |
撤销提交 / git reset
撤销最近一次提交
完全撤销最近一次提交(保留修改到暂存区)
1
git reset --soft HEAD^
完全撤销最近一次提交(丢弃修改 工作区跟暂存区都没有了)
1
git reset --hard HEAD^
混合重置(修改回到工作区, 不在暂存区)
1
git reset HEAD^
撤销多个提交
撤销最近 N 次提交(保留修改)
1
git reset --soft HEAD~N
示例(撤销最近3次提交):
1
git reset --soft HEAD~3
撤销最近 N 次提交(丢弃修改)
1
git reset --hard HEAD~N
示例(撤销最近3次提交):
1
git reset --hard HEAD~3
撤销到指定提交 (Commit ID 这一次依然是保留提交的,它之后的所有才撤销)
撤销到指定的提交(保留修改)
1
git reset --soft <commit_hash>
示例:
1
git reset --soft abc123
撤销到指定的提交(丢弃修改)
1
git reset --hard <commit_hash>
示例:
1
git reset --hard abc123
实际操作
🚨 Git_模拟提交后撤销最后一次提交并保留修改
- 操作步骤:
- 代码改动,然后工作区有相应修改文件
- git add . 添加到暂存区
- git commit -m “提交信息” 提交到本地仓库
- git reset –soft HEAD^ 撤销最近一次提交并保留修改, 回到暂存区
🚨 Git_模拟提交后撤销最后2次提交并保留修改
- 操作步骤:
- 代码改动,然后工作区有相应修改文件
- git add . 添加到暂存区
- git commit -m “提交信息” 提交到本地仓库
- 提交 3 次,创建 3 个提交记录
- git reset –hard HEAD~2 撤销最近两次提交,完全丢弃最后两次提交的修改
🚨 Git_模拟提交后撤销到指定提交并保留/丢弃修改
- 操作步骤:
- 代码改动,然后工作区有相应修改文件
- git add . 添加到暂存区
- git commit -m “提交信息” 提交到本地仓库
- 提交 4 次,创建 4 个提交记录
- git log 或者 找到记录右键查看 commitId
- git reset –soft/–hard commitId 撤销到指定提交并保留/丢弃修改
Git Revert 撤销提交教程
什么是 Git Revert?
git revert 是一个用于撤销提交的命令,它会创建一个新的提交来撤销指定提交的更改。与 git reset 不同,git revert 不会改变历史记录,而是通过添加新的提交来撤销更改,这使得它更安全,特别是在协作项目中。
基本语法
1 | # 撤销单个提交 |
常用选项
1 | # 不自动提交,只创建撤销更改 |
实际案例
案例 1:撤销单个提交
假设我们有以下提交历史:
1 | A --- B --- C --- D (HEAD) |
要撤销提交 C:
1 | git revert C |
结果:
1 | A --- B --- C --- D --- E (HEAD) |
其中 E 是撤销 C 的新提交。
案例 2:撤销最近的提交
1 | # 撤销最近的提交 |
案例 3:撤销合并提交
1 | # 撤销合并提交 |
-m 1 表示保留主分支的更改,撤销合并分支的更改。
撤销策略对比
| 命令 | 用途 | 是否改变历史 | 适用场景 |
|---|---|---|---|
git revert |
创建新提交撤销更改 | 否 | 已推送到远程的提交 |
git reset |
直接删除提交 | 是 | 本地未推送的提交 |
git reset --soft |
保留更改在暂存区 | 是 | 重新组织本地提交 |
git reset --hard |
完全删除更改 | 是 | 完全放弃更改 |
💡 重要提示:
git revert是最安全的撤销方式,因为它不会改变历史记录,特别适合团队协作项目。
处理冲突
当撤销的提交与当前代码有冲突时:
1 | # 1. 执行撤销命令 |
撤销多个提交
方法 1:逐个撤销
1 | git revert <commit1> |
方法 2:一次性撤销
1 | git revert <oldest-commit>..<newest-commit> |
方法 3:撤销范围提交
1 | # 撤销从 commit1 到 commit2 之间的所有提交 |
高级用法
撤销并编辑提交信息
1 | git revert -e <commit-hash> |
撤销但不自动提交
1 | git revert --no-commit <commit-hash> |
撤销合并提交
1 | # 撤销合并提交,保留主分支更改 |
最佳实践
1. 确认提交历史
1 | # 查看提交历史 |
2. 创建备份分支
1 | # 在撤销前创建备份分支 |
3. 测试撤销结果
1 | # 撤销后测试功能 |
4. 团队协作注意事项
- 在撤销已推送的提交前,先与团队成员沟通
- 使用清晰的提交信息说明撤销原因
- 考虑使用
git revert而不是git reset来保持历史完整性 - 在提交信息中说明撤销的原因和影响范围
常见问题解决
问题 1:撤销后出现冲突
1 | # 查看冲突文件 |
问题 2:撤销撤销(重新应用被撤销的更改)
1 | # 撤销之前的撤销提交 |
问题 3:撤销部分文件更改
1 | # 撤销特定文件的更改 |
总结
git revert 是一个安全且强大的工具,特别适合:
- ✅ 撤销已推送到远程仓库的提交
- ✅ 在团队协作中保持历史完整性
- ✅ 撤销合并提交
- ✅ 创建可追踪的撤销记录
记住:git revert 通过创建新提交来撤销更改,不会改变历史记录,这使得它成为撤销已推送提交的最佳选择。
快速参考
| 场景 | 命令 | 说明 |
|---|---|---|
| 撤销单个提交 | git revert <commit-hash> |
创建新提交撤销指定提交 |
| 撤销最近提交 | git revert HEAD |
撤销最近的提交 |
| 撤销多个提交 | git revert <commit1> <commit2> |
撤销多个指定提交 |
| 撤销合并提交 | git revert -m 1 <merge-commit> |
撤销合并,保留主分支 |
| 撤销但不提交 | git revert --no-commit <commit> |
只创建更改,不自动提交 |
| 编辑提交信息 | git revert -e <commit> |
撤销时编辑提交信息 |
实际操作
🚨 创建撤销最近的提交 / git revert HEAD
Git_合并分支与撤销合并分支
合并分支 / git merge
1 | git merge <branch> |
撤销上一次合并 / git merge –abort
1 | git merge --abort |

