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

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

目录
相关文章
|
2月前
|
人工智能 数据挖掘 持续交付
为什么越来越多人开始关注OPC一人公司?
AI时代兴起OPC一人公司:单人+AI智能体+协作网络,实现轻量化闭环创业。它超越个体户与自由职业,强调系统化交付与能力升级。OPC中国聚焦人才生态建设,“智能体来了”专注能力培养,共推AI原生新范式。(239字)
|
Java API Nacos
nacos常见问题之把tenantid传过来如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
834 3
|
2月前
|
运维 网络安全 数据安全/隐私保护
Docker 部署 GitLab CE 完整版教程
GitLab Community Edition(简称GITLAB-CE)是一款开源的DevOps平台,集成了代码仓库管理、版本控制、 issue 跟踪、CI/CD 流水线、Wiki 和容器仓库等功能,为软件开发团队提供一站式的协作解决方案。通过Docker容器化部署GITLAB-CE,可大幅简化安装流程、提高环境一致性,并便于快速扩展和迁移。本文将详细介绍如何通过Docker快速部署GITLAB-CE,并提供生产环境优化建议及故障排查方案。
1185 0
Docker 部署 GitLab CE 完整版教程
|
2月前
|
存储 人工智能 自然语言处理
知识库为谁而建 ?
随着 Agent 的逐步广泛应用,知识库的使用者正在从人变成 Agent。 知识库的设计逻辑、维护方式、甚至存在的意义,都需要重新思考。
747 10
知识库为谁而建 ?
|
8月前
|
文字识别 监控 算法
Scikit-image 实战指南:10 个让 CV 模型更稳健的预处理技巧
在计算机视觉落地中,模型性能下降常源于预处理缺陷。本文基于scikit-image总结十大工程化模式:统一数据类型、显式颜色空间、抗锯齿缩放、CLAHE增强、去噪选择、去偏斜、背景去除、智能二值化、形态学清理与几何归一化,系统化提升输入质量,让模型真正发挥效能。
322 2
Scikit-image 实战指南:10 个让 CV 模型更稳健的预处理技巧
|
2月前
|
人工智能 数据可视化 测试技术
【教程】阿里云轻量云服务器一键配置OpenClaw
如果你还没有部署自己的 OpenClaw,还可以通过购买腾讯的轻量云服务器,一键秒级部署指南一键秒级部署指南,一键即可在几秒内完成部署。
461 9
|
2月前
|
Java Windows
windows版jdk版本管理工具
JC-jEnv 是 Windows 下轻量级 Java 版本管理工具,支持本地 JDK 管理、远程一键安装(如 `jvms install 21.0.4`)、快速切换(`jvms switch`)及项目级版本隔离,操作简洁,无需手动配环境变量。
400 4
|
2月前
|
人工智能 运维 监控
OpenClaw是什么能干什么 新版OpenClaw完整入门教程 核心功能与阿里云部署实操指南
在AI智能体全面普及的2026年,各类自动化代理工具层出不穷,OpenClaw凭借开源免费、私有化部署、多平台适配、强大任务执行能力迅速走红,成为个人办公、团队协作、开发运维、消息自动交互的热门选择。很多新手初次接触OpenClaw时,都不清楚它到底是什么、具备哪些核心能力、适合什么场景,也不知道如何在阿里云服务器上快速完成部署配置。
456 3
|
2月前
|
IDE 数据可视化 开发工具
软件开发新手入门五大核心技能之版本控制工具(五)
教程来源 http://xgmoi.cn/ 本章系统讲解 Git 高级用法:.gitignore 精准忽略文件;stash 临时保存未完成修改;alias 自定义高效命令;submodule 管理外部依赖;grep/blame/bisect 深度调试;涵盖集中式、功能分支、Git Flow 等主流协作工作流;详解撤销提交、amend、cherry-pick 等高频问题解决方案;并介绍 GUI 工具与 VS Code 集成技巧。
167 0
|
2月前
|
安全 程序员 开发工具
软件开发新手入门五大核心技能之版本控制工具(一)
教程来源 http://mykunlian.com/ 版本控制是程序员的“后悔药”与协同桥梁:记录每一次修改,支持随时回溯、安全实验、并行分支与多人协作。Git凭借分布式架构成为行业标准,本文带你从零掌握核心技能。
199 0