如何管理 Git 提交与重置

GitGitBeginner
立即练习

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

简介

在本全面教程中,我们将探讨将 Git 仓库重置到特定提交的过程。无论你是需要撤销更改、恢复到先前状态,还是仅仅管理你的提交历史记录,本指南都将为你提供有效实现目标所需的知识和工具。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/DataManagementGroup -.-> git/reset("Undo Changes") git/DataManagementGroup -.-> git/restore("Revert Files") subgraph Lab Skills git/status -.-> lab-393025{{"如何管理 Git 提交与重置"}} git/commit -.-> lab-393025{{"如何管理 Git 提交与重置"}} git/diff -.-> lab-393025{{"如何管理 Git 提交与重置"}} git/reset -.-> lab-393025{{"如何管理 Git 提交与重置"}} git/restore -.-> lab-393025{{"如何管理 Git 提交与重置"}} end

Git 提交基础

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

Git 提交是版本控制系统中的基本快照,代表项目开发历史中的特定时刻。每个提交捕获特定时刻的文件状态,从而能够精确跟踪和管理代码更改。

核心提交概念

Git 中的提交具有多个关键功能:

  • 创建永久代码快照
  • 跟踪项目演变
  • 实现协作式仓库管理
graph LR A[工作目录] --> B[暂存区] B --> C[Git 仓库] C --> D[提交历史]

基本提交命令

命令 功能 示例
git add 暂存更改 git add file.txt
git commit 创建快照 git commit -m "Initial commit"
git log 查看提交历史 git log

在 Ubuntu 22.04 上的实际提交示例

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

## 创建一个示例文件
echo "Hello, Git Commits!" > README.md

## 暂存该文件
git add README.md

## 创建第一个提交
git commit -m "Add initial README file"

## 查看提交详情
git log

提交标识

每个提交都由一个 40 个字符的 SHA-1 哈希唯一标识,确保对代码快照进行精确跟踪并保证版本控制的完整性。

Git 重置技术

理解 Git 重置命令

Git 重置是一个用于操作提交历史和仓库状态的强大命令。它提供了对代码快照的精确控制,并允许开发者在项目开发的不同阶段之间切换。

重置类型及行为

graph LR A[git reset] --> B[软重置] A --> C[混合重置] A --> D[硬重置]
重置类型 工作目录 暂存区 提交历史
软重置 不变 不变 移动 HEAD
混合重置 不变 修改 移动 HEAD
硬重置 修改 修改 移动 HEAD

在 Ubuntu 22.04 上的实际重置场景

## 初始化仓库
mkdir reset_demo
cd reset_demo
git init

## 创建初始提交
echo "First commit" > file1.txt
git add file1.txt
git commit -m "First commit"

echo "Second commit" > file2.txt
git add file2.txt
git commit -m "Second commit"

## 查看提交历史
git log

## 软重置到上一个提交
git reset --soft HEAD~1

## 混合重置到特定提交
git reset HEAD~1

## 硬重置到确切的提交
git reset --hard HEAD~1

提交哈希导航

每个重置操作都可以使用唯一的 SHA-1 哈希标识符来指定特定的提交,从而实现精确的仓库状态管理和版本控制导航。

实用的 Git 工作流程

Git 工作流程基础

高效的 Git 工作流程涉及对代码更改、分支策略和协作开发技术的策略性管理。理解这些原则能实现更顺畅的版本控制和项目管理。

工作流程阶段

graph LR A[工作目录] --> B[暂存区] B --> C[本地仓库] C --> D[远程仓库]

常见工作流程模式

工作流程阶段 关键操作 命令示例
初始化 创建仓库 git init
暂存更改 准备文件 git add.
提交 保存快照 git commit -m "消息"
分支 创建工作区 git branch 功能分支
合并 整合更改 git merge 功能分支

在 Ubuntu 22.04 上的实际工作流程演示

## 创建项目目录
mkdir workflow_demo
cd workflow_demo
git init

## 配置用户身份
git config user.name "开发者"
git config user.email "[email protected]"

## 创建功能分支
git checkout -b 功能分支

## 进行并暂存更改
echo "新功能实现" > 功能.txt
git add 功能.txt
git commit -m "实现新功能"

## 切换回主分支
git checkout main
git merge 功能分支

变更管理技术

高效的 Git 工作流程需要对未提交的更改进行策略性处理,利用诸如 git stashgit resetgit checkout 等命令来有效管理代码过渡。

总结

在本教程结束时,你将对如何使用 “git reset” 命令将你的 Git 仓库重置到特定提交有扎实的理解。你将学习如何识别你想要重置到的提交,处理任何未提交的更改,并验证重置操作。这些知识将使你能够掌控你的 Git 工作流程,并维护一个干净、有条理的代码库。