软件开发新手入门五大核心技能之版本控制工具(二)

简介: 教程来源 http://sdfxgc.cn/ 本章详解Git单人开发核心操作:涵盖仓库创建(init/clone)、文件三状态管理(未跟踪→已暂存→已提交)、status/diff/log实用技巧,以及安全撤销与精准回退(reset/amend/restore/reflog),助你夯实版本控制基础。

第三章 Git 基础操作 —— 单人开发的核心命令

3.1 创建仓库与首次提交
方式一:初始化本地仓库

# 创建项目目录
mkdir my_project
cd my_project

# 初始化 Git 仓库(生成 .git 隐藏目录)
git init

# 查看状态(应该看到 "No commits yet" 和 untracked files)
git status

方式二:克隆远程仓库(后面详解)

git clone https://github.com/某个仓库.git

创建第一个文件并提交:

# 创建文件
echo "# My Project" > README.md
echo "print('Hello World')" > hello.py

# 查看状态(红色表示未跟踪)
git status

# 将文件添加到暂存区
git add README.md hello.py
# 或者添加所有变更:git add .

# 再次查看状态(绿色表示已暂存)
git status

# 提交到仓库(必须写有意义的提交信息)
git commit -m "Initial commit: add README and hello.py"

# 查看提交历史
git log

输出示例:

commit 3a7c8f9d2e1b4c5a6d7e8f9a0b1c2d3e4f5a6b7c (HEAD -> master)
Author: Your Name <email@example.com>
Date:   Fri May 30 14:23:45 2026 +0800

    Initial commit: add README and hello.py

3.2 文件的三种状态转换

# 已修改 -> 已暂存
git add <file>

# 已暂存 -> 已提交
git commit -m "message"

# 跳过暂存区直接提交(只适用于已跟踪的文件)
git commit -a -m "message"

# 移除暂存区的文件(保留工作区修改)
git reset HEAD <file>

# 丢弃工作区的修改(危险!不可恢复)
git checkout -- <file>
# 或新版本推荐
git restore <file>

# 从暂存区撤回到工作区(不保留暂存)
git reset HEAD <file>
# 或
git restore --staged <file>

3.3 git status 深入解析

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:          # 已暂存
  (use "git restore --staged <file>..." to unstage)
        modified:   index.html
        new file:   style.css

Changes not staged for commit:    # 已修改但未暂存
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

Untracked files:                  # 未跟踪的新文件
  (use "git add <file>..." to include in what will be committed)
        temp.log

3.4 git diff —— 查看修改细节

# 查看工作区与暂存区的差异(即未暂存的修改)
git diff

# 查看暂存区与最新提交的差异(即即将提交的内容)
git diff --staged
# 或
git diff --cached

# 查看工作区与最新提交的差异
git diff HEAD

# 查看两次提交之间的差异
git diff <commit1> <commit2>

# 查看单个文件在不同版本的差异
git diff HEAD~2 -- hello.py

# 使用图形化工具查看差异
git difftool

示例输出:

diff --git a/hello.py b/hello.py
index 7c6a5b8..7f3e9c1 100644
--- a/hello.py
+++ b/hello.py
@@ -1,2 +1,3 @@
 print('Hello World')
+print('Welcome to Git')

3.5 git log —— 查看历史

# 完整日志
git log

# 一行显示(简洁)
git log --oneline

# 图形化显示分支
git log --graph --oneline --decorate --all

# 显示最近 n 条
git log -5

# 显示每次修改的具体内容
git log -p

# 按作者搜索
git log --author="Your Name"

# 按提交信息搜索
git log --grep="fix bug"

# 显示文件修改统计
git log --stat

# 查看某个文件的历史
git log --follow hello.py

# 自定义格式
git log --pretty=format:"%h - %an, %ar : %s"
# %h 缩写哈希, %an 作者名, %ar 相对时间, %s 提交信息

3.6 撤销与回退 —— “后悔药”
场景1:修改最后一次提交(追加文件或修改信息)

# 忘记添加某个文件,或者提交信息写错了
git add forgotten_file
git commit --amend --no-edit   # 不修改提交信息,只是追加文件

# 修改最后一次提交的信息
git commit --amend -m "新的提交信息"

场景2:回退到某个历史版本

# 查看历史找到目标提交的哈希
git log --oneline

# 回退到指定提交(保留之后修改在工作区)
git reset --soft <commit>   # 保留暂存区和工作区

git reset --mixed <commit>  # 保留工作区,清空暂存区(默认)

git reset --hard <commit>   # 彻底删除之后的所有修改(危险!)

# 示例:回退到前 2 个提交
git reset --hard HEAD~2

场景3:撤销已暂存的文件

git reset HEAD <file>
# 新版本推荐
git restore --staged <file>

场景4:撤销工作区的修改

git checkout -- <file>
# 新版本推荐
git restore <file>

场景5:恢复已删除的提交或分支(使用 reflog)

# 查看所有 HEAD 移动记录
git reflog

# 找到目标哈希,然后恢复
git checkout <hash>
# 或者创建新分支指向它
git branch recover-branch <hash>

来源:
http://vrhyh.cn/

目录
相关文章
|
8天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
3691 16
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
16天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3604 13
|
10天前
|
人工智能 自然语言处理 供应链
|
12天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
2997 7
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
19天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
3729 25
|
10天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全+三种模式+记忆体系+实战工作流完整手册
Claude Code 是当前最流行的终端级 AI 编程助手,能够直接在命令行中完成代码生成、项目理解、文件修改、命令执行、错误修复等全流程开发工作。它不依赖图形界面、不占用额外资源,却能深度理解项目结构,自动生成规范代码,大幅提升研发效率。
1471 3
|
3天前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
502 0
|
17天前
|
存储 Linux iOS开发
【2026最新】MarkText中文版Markdown编辑器使用图解(附安装包)
MarkText是一款免费开源、跨平台的Markdown编辑器,主打所见即所得实时预览,支持Windows/macOS/Linux。内置数学公式、流程图、代码高亮、多主题及PDF/HTML导出,是Typora的轻量免费替代首选。(239字)