如何撤销和重置 Git 提交

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本全面的 Git 教程探讨了在版本控制系统中管理提交和撤销更改的基本技术。该指南面向所有技能水平的开发者,深入介绍了 Git 的核心版本跟踪机制,帮助程序员了解如何有效地管理代码修改、暂存更改以及维护清晰的项目历史记录。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") git/DataManagementGroup -.-> git/reset("Undo Changes") git/BranchManagementGroup -.-> git/merge("Merge Histories") git/CollaborationandSharingGroup -.-> git/pull("Update & Merge") git/CollaborationandSharingGroup -.-> git/push("Update Remote") subgraph Lab Skills git/commit -.-> lab-392783{{"如何撤销和重置 Git 提交"}} git/reset -.-> lab-392783{{"如何撤销和重置 Git 提交"}} git/merge -.-> lab-392783{{"如何撤销和重置 Git 提交"}} git/pull -.-> lab-392783{{"如何撤销和重置 Git 提交"}} git/push -.-> lab-392783{{"如何撤销和重置 Git 提交"}} end

Git 提交基础

理解版本控制系统中的 Git 提交

Git 提交是版本控制系统的基础,它是项目在特定时间点的快照。它们是跟踪代码更改和管理仓库历史的关键机制。

核心提交概念

Git 中的提交记录了:

  • 特定的代码修改
  • 更改的时间戳
  • 作者信息
  • 唯一标识符(哈希值)
graph LR A[工作目录] --> B[暂存区] B --> C[仓库] C --> D[提交历史]

基本提交命令

命令 功能 示例
git add 暂存更改 git add file.txt
git commit 创建快照 git commit -m "初始提交"
git status 检查仓库状态 git status

实际提交工作流程

## 初始化一个新的 Git 仓库
mkdir git-demo
cd git-demo
git init

## 创建一个示例文件
echo "Hello, Git!" > example.txt

## 暂存该文件
git add example.txt

## 使用描述性消息提交
git commit -m "添加示例文本文件"

## 查看提交历史
git log

提交最佳实践

有效的提交应该:

  • 是原子性的(单个逻辑更改)
  • 有清晰、描述性的消息
  • 跟踪有意义的代码修改

掌握 Git 版本控制需要将提交基础作为核心的代码跟踪和仓库管理策略来理解。

撤销和回滚更改

理解 Git 中的更改回滚

Git 提供了强大的机制来撤销和回滚更改,从而实现用于管理项目历史的精确版本控制技术。

关键回滚策略

graph LR A[未提交的更改] --> B[git reset] A --> C[git checkout] B --> D[暂存的更改] C --> E[工作目录] D --> F[已提交的更改] F --> G[git revert]

回滚命令比较

命令 范围 效果 使用场景
git reset 提交/暂存区 移动指针 撤销本地更改
git revert 已提交的更改 创建反向提交 安全地修改公共历史
git checkout 文件/分支 丢弃本地修改 恢复到先前状态

实际回滚示例

## 丢弃文件中未暂存的更改

## 重置上一次提交,保留更改

## 完全移除上一次提交

## 创建一个回滚提交

## 回滚特定提交

更改管理技术

有效的更改管理需要理解细微的 git reset 和 git revert 策略,从而实现精确的提交回滚和版本控制操作。

高级提交策略

复杂的版本控制技术

高级提交策略通过精确的历史记录操作,实现复杂的代码管理和协作开发工作流程。

交互式提交工作流程

graph LR A[暂存区] --> B[交互式变基] B --> C[提交历史优化] C --> D[清晰的仓库结构]

高级提交命令

命令 功能 复杂程度
git rebase -i 交互式历史记录编辑
git cherry-pick 选择特定提交
git commit --amend 修改上一次提交

交互式变基演示

## 对最后3次提交开始交互式变基
git rebase -i HEAD~3

## 典型的变基操作
## pick: 保留提交
## squash: 合并提交
## edit: 修改提交

## 在变基期间解决合并冲突
git mergetool
git rebase --continue

提交历史记录操作

## 合并多个提交
## 选择'squash' 来合并提交

## 修改提交消息

## 有选择地应用另一个分支的提交

冲突解决策略

合并冲突解决需要系统的方法,包括仔细的提交历史记录操作和精确的代码恢复技术,以维护仓库的完整性。

总结

掌握 Git 提交策略对于高效的软件开发至关重要。通过理解如何创建原子提交、使用回滚命令以及系统地跟踪代码更改,开发者可以维护更干净、更有条理的仓库。本教程表明,有效的版本控制不仅仅是跟踪更改,而是要为项目的演变创建一个清晰、合乎逻辑的记录。