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

简介: 教程来源 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/

目录
相关文章
|
3月前
|
人工智能 数据挖掘 持续交付
为什么越来越多人开始关注OPC一人公司?
AI时代兴起OPC一人公司:单人+AI智能体+协作网络,实现轻量化闭环创业。它超越个体户与自由职业,强调系统化交付与能力升级。OPC中国聚焦人才生态建设,“智能体来了”专注能力培养,共推AI原生新范式。(239字)
|
Java API Nacos
nacos常见问题之把tenantid传过来如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
849 3
|
3月前
|
人工智能 前端开发 JavaScript
免费可商用 PHP 管理后台 CatchAdmin V5.3.1 发布 后台打包直降 5s 内
CatchAdmin V5.3.1 是免费可商用的 Laravel 13 + Vue 3 后台框架,开箱即用、模块解耦、权限完备(菜单/按钮/数据三级控制)。本次升级至 Tailwind CSS v4 & Vite 8,打包提速至 5s 内,并强化 AI 开发支持(Skills/AGENTS.md/MCP),助你极速构建企业级后台。(239字)
592 131
|
3月前
|
运维 网络安全 数据安全/隐私保护
Docker 部署 GitLab CE 完整版教程
GitLab Community Edition(简称GITLAB-CE)是一款开源的DevOps平台,集成了代码仓库管理、版本控制、 issue 跟踪、CI/CD 流水线、Wiki 和容器仓库等功能,为软件开发团队提供一站式的协作解决方案。通过Docker容器化部署GITLAB-CE,可大幅简化安装流程、提高环境一致性,并便于快速扩展和迁移。本文将详细介绍如何通过Docker快速部署GITLAB-CE,并提供生产环境优化建议及故障排查方案。
1519 0
Docker 部署 GitLab CE 完整版教程
|
3月前
|
测试技术 C++ Python
如何从零开发一个工业级的 SKILL
手把手教你搓个 Skill,亲测新手也能跑起来,实操党可以直接冲~
664 1
如何从零开发一个工业级的 SKILL
|
3月前
|
存储 人工智能 缓存
AI不稳定不是工程Bug,是一场系统性误读——意图共鸣科技行业洞察
过去三年AI狂卷参数与算力,却困于“Demo惊艳、上线翻车”。症结在于误读“AI稳定性”——它非传统软件不宕机,而是大模型在行为分寸、长期记忆、责任可溯、商业可持续四维的结构性缺失。意图共鸣科技正深耕此深水区。
297 6
|
3月前
|
人工智能 自然语言处理 计算机视觉
人工智能|大白话Meshed-Memory Transformer
M2Transformer是一种图像描述生成模型,由三部分构成:骨干编码器(Faster R-CNN)提取区域特征;记忆增强编码器(Transformer)对特征进行语义细化;网格解码器(Transformer)将增强特征转化为自然语言描述。结构清晰、层次分明,兼顾准确性与可解释性。(239字)
216 4
|
3月前
|
IDE 数据可视化 开发工具
软件开发新手入门五大核心技能之版本控制工具(五)
教程来源 http://xgmoi.cn/ 本章系统讲解 Git 高级用法:.gitignore 精准忽略文件;stash 临时保存未完成修改;alias 自定义高效命令;submodule 管理外部依赖;grep/blame/bisect 深度调试;涵盖集中式、功能分支、Git Flow 等主流协作工作流;详解撤销提交、amend、cherry-pick 等高频问题解决方案;并介绍 GUI 工具与 VS Code 集成技巧。
182 0
|
3月前
|
传感器 JavaScript 芯片
24V转5V/3.3V降压芯片,LDO和DC-DC如何选择
本指南详解24V转5V/3.3V电源方案选型,涵盖PW系列LDO(如PW6206)与DC-DC芯片(PW2312/PW2330等),针对大压差下的效率、散热、噪声、成本等核心挑战,提供“DC-DC主降+LDO后稳”等三级架构建议,助力高效可靠设计。
|
3月前
|
安全 程序员 开发工具
软件开发新手入门五大核心技能之版本控制工具(一)
教程来源 http://mykunlian.com/ 版本控制是程序员的“后悔药”与协同桥梁:记录每一次修改,支持随时回溯、安全实验、并行分支与多人协作。Git凭借分布式架构成为行业标准,本文带你从零掌握核心技能。
231 0