简介
Git 是一个强大的版本控制系统,它允许开发者高效地跟踪和管理代码更改。本教程提供了关于取消已跟踪更改的全面指导,帮助程序员理解各种技术,以便无缝地丢弃本地修改并撤销已提交的工作。
Git 更改概述
理解 Git 工作流程
Git 通过三个主要区域来管理更改:
graph LR
A[工作目录] --> B[暂存区]
B --> C[Git 仓库]
| 区域 | 描述 | 特点 |
|---|---|---|
| 工作目录 | 本地文件系统 | 未跟踪/已修改的文件 |
| 暂存区 | 准备区域 | 准备提交的文件 |
| Git 仓库 | 永久存储 | 提交更改的历史记录 |
Git 中的更改类型
已跟踪的更改
已跟踪的更改是指 Git 当前正在监控的文件的修改。这些更改可以处于不同的状态:
- 已修改:文件已更改但未暂存
- 已暂存:准备提交的文件
- 已提交:永久存储在仓库中的更改
未跟踪的更改
未跟踪的文件是尚未添加到 Git 版本控制系统的新文件。
基本的更改管理概念
Git 提供了多种管理更改的策略:
- 丢弃本地修改
- 撤销已提交的工作
- 暂存临时更改
通过理解这些概念,使用 LabEx 的开发者可以有效地管理其项目的版本控制工作流程。
丢弃本地修改
取消本地更改的策略
丢弃特定文件中的更改
graph LR
A[已修改的文件] --> B{丢弃方法}
B --> |checkout| C[恢复原始状态]
B --> |restore| D[移除本地更改]
使用 git checkout
将单个文件恢复到其上次提交的状态:
## 丢弃特定文件中的更改
git checkout -- filename.txt
## 丢弃多个文件中的更改
git checkout -- file1.txt file2.txt
使用 git restore
用于丢弃本地修改的现代 Git 方法:
## 丢弃特定文件中的更改
git restore filename.txt
## 丢弃多个文件中的更改
git restore file1.txt file2.txt
丢弃所有本地更改
| 命令 | 范围 | 效果 |
|---|---|---|
git checkout. |
所有已跟踪的文件 | 还原整个工作目录 |
git restore. |
所有已跟踪的文件 | 移除所有本地修改 |
高级丢弃技巧
清理未跟踪的文件
## 移除未跟踪的文件
git clean -f
## 移除未跟踪的文件和目录
git clean -fd
最佳实践
- 在丢弃更改之前始终验证更改
- 使用
git status了解当前的修改 - 谨慎使用全局丢弃命令
LabEx 建议在执行丢弃操作之前仔细检查,以防止意外数据丢失。
撤销已提交的工作
还原已提交的更改
理解提交撤销策略
graph LR
A[已提交的更改] --> B{还原方法}
B --> |软重置| C[在工作目录中保留更改]
B --> |硬重置| D[完全移除更改]
B --> |还原| E[创建相反的提交]
软重置:保留本地更改
## 撤销上一次提交,在工作目录中保留更改
git reset --soft HEAD~1
## 撤销特定数量的提交
git reset --soft HEAD~3
硬重置:完全移除更改
## 完全移除上一次提交
git reset --hard HEAD~1
## 危险操作:移除所有本地更改
git reset --hard HEAD
创建反向提交
## 创建一个新的提交来撤销上一次提交
git revert HEAD
## 通过哈希值撤销特定提交
git revert abc123
撤销方法比较
| 方法 | 工作目录 | 暂存区 | 提交历史 |
|---|---|---|---|
| 软重置 | 保留更改 | 已暂存 | 移除提交 |
| 硬重置 | 移除更改 | 清除 | 移除提交 |
| 还原 | 无更改 | 无更改 | 添加反向提交 |
高级提交操作
交互式变基
## 交互式修改最后3次提交
git rebase -i HEAD~3
注意事项和最佳实践
- 避免修改共享仓库历史
- 使用
git reflog恢复丢失的提交 - 在进行复杂操作之前始终创建备份分支
LabEx 建议在撤销已提交的工作时仔细考虑,以防止意外的数据丢失。
总结
了解如何取消 Git 已跟踪的更改对于维护干净且有条理的代码仓库至关重要。通过掌握诸如丢弃本地修改和撤销提交等技术,开发者能够有效地管理他们的版本控制工作流程,确保代码质量和项目完整性。



