初级程序员必备的十大技能之 Git 版本控制(二)

简介: 教程来源 http://unbgv.cn Git基础操作覆盖日常开发80%场景:含仓库初始化(init/clone)、状态查看(status/diff)、文件暂存与提交(add/commit)、历史浏览(log/blame)及安全撤销(restore/reset/revert),助开发者高效管理代码版本。

三、Git 基础操作:日常开发的 80%

3.1 初始化仓库

# 方式1:从零开始创建新仓库
mkdir my-project
cd my-project
git init
# Initialized empty Git repository in /path/to/my-project/.git/

# 方式2:克隆现有远程仓库
git clone https://github.com/username/repo.git
git clone git@github.com:username/repo.git  # SSH 方式
git clone https://github.com/username/repo.git my-folder  # 指定文件夹名

3.2 查看状态与差异

# 查看工作区和暂存区状态(最常用的命令)
git status

# 详细状态
git status -s  # 简短输出
# ?? 新文件(未追踪)
# A  已暂存(新添加)
# M  已修改
# D  已删除

# 查看具体修改内容
git diff                 # 工作区 vs 暂存区
git diff --staged        # 暂存区 vs 上一次提交
git diff HEAD            # 工作区 vs 上一次提交
git diff <commit1> <commit2>  # 两个提交之间的差异

# 查看特定文件的差异
git diff src/index.js

3.3 添加与提交

# 添加文件到暂存区
git add README.md           # 添加单个文件
git add src/                # 添加整个目录
git add .                   # 添加当前目录下所有修改(谨慎使用)
git add -A                  # 添加所有修改(包括删除和新增)

# 交互式添加(选择部分修改)
git add -p                  # 可以逐块选择是否暂存

# 提交到本地仓库
git commit -m "添加登录功能"

# 提交并跳过暂存区(直接提交工作区的修改)
git commit -a -m "修复Bug"

# 修改最后一次提交(修改提交信息或补充遗漏文件)
git commit --amend -m "新的提交信息"

# 补充文件到上一次提交(不修改信息)
git add forgotten-file.js
git commit --amend --no-edit

3.4 查看历史

# 查看提交历史
git log

# 单行显示
git log --oneline

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

# 显示最近 N 次提交
git log -5

# 显示每次提交的修改内容
git log -p

# 按作者筛选
git log --author="张三"

# 按时间筛选
git log --since="2024-01-01" --until="2024-12-31"

# 按提交信息筛选
git log --grep="修复"

# 查看某文件的提交历史
git log --follow src/index.js

# 查看是谁最后修改了文件的每一行
git blame src/index.js

3.5 撤销操作

# 1. 撤销工作区的修改(还没 add)
git checkout -- <file>        # 恢复到上次提交的状态
git restore <file>            # 新版本的写法(推荐)

# 2. 撤销暂存区的修改(已经 add,还没 commit)
git reset HEAD <file>         # 旧版本写法
git restore --staged <file>   # 新版本写法(推荐)

# 3. 撤销提交(已经 commit,还没 push)
git reset --soft HEAD~1       # 撤销提交,保留修改在工作区
git reset --mixed HEAD~1      # 撤销提交和暂存,保留修改在工作区(默认)
git reset --hard HEAD~1       # 完全撤销,丢失所有修改(危险!)

# 4. 撤销远程提交(已经 push,需要谨慎!)
git revert HEAD               # 创建一个新的提交来撤销上一次提交
git revert <commit-hash>      # 撤销指定的提交

# 5. 恢复被删除的文件
# 先找到删除该文件的提交
git log --diff-filter=D --summary | grep delete
# 然后恢复
git checkout <commit-hash>^ -- <file-path>

reset vs revert 的区别:

reset:移动 HEAD 指针,改写历史
A → B → C (HEAD)
git reset HEAD~1
A → B (HEAD)   # C 消失了

revert:保留历史,创建新提交来撤销
A → B → C → C' (HEAD)
git revert HEAD
A → B → C → D (D = 撤销 C 的修改)

来源:
http://htnus.cn

相关文章
|
Linux 开发工具 git
【Git】Git基本操作-1
【Git】Git基本操作-1
|
Linux 应用服务中间件 开发工具
Linux服务器搭建本地YUM源
对于一些单位通常都会对网络进行分区,处于内网区域的服务器是无法直接访问到互联网的,这时,如果部署一些需要在线下载服务的环境就显得异常麻烦,离线依赖包装的真的折磨人,那这时我们该怎么办呢?前半部分摘自CSDN博客:https://blog.csdn.net/qq_44895681/article/details/127617155,侵删,后半部分结合本人工作经验和实践完成。
Linux服务器搭建本地YUM源
|
10天前
|
人工智能 API 调度
OpenClaw是什么?新一代智能体工具链深度解析
OpenClaw是“智能体来了”集团推出的新一代智能体操作系统,让AI从“能聊天”跃升为“能干活”。支持浏览器操作、文件读写、API调用与多智能体协同,具备环境配置、Skill开发、工作流编排和工具链集成四大核心模块。
|
5月前
|
Linux 数据库
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
本文介绍在CentOS 7.9环境下安装PolarDB-X单机版数据库的完整流程,涵盖系统环境准备、本地Yum源配置、RPM包安装、用户与目录初始化、依赖库解决、数据库启动及客户端连接等步骤,助您快速部署运行PolarDB-X。
1624 2
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
|
9月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
626 8
|
存储 数据可视化 数据挖掘
利用Matplotlib实现地图可视化
【4月更文挑战第17天】使用Matplotlib结合GeoPandas和Basemap在Python中实现地图可视化。首先安装Matplotlib、GeoPandas和Basemap库。读取GeoJSON或Shapefile格式的地理数据,然后使用Basemap创建地图底图,绘制海岸线、国家边界和大陆湖泊。将GeoDataFrame数据转换后叠加到地图上,自定义地图样式和添加图例。利用颜色映射展示与地理位置相关的数值数据,创建颜色条。此外,可通过Folium实现交互式地图。通过学习和实践,提升地图可视化的技能。
1065 1
如何在IDEA中创建Module、以及怎样在IDEA中删除Module?
这篇文章介绍了在IntelliJ IDEA中使用Module的原因、创建Module的步骤以及如何从硬盘上删除Module。
如何在IDEA中创建Module、以及怎样在IDEA中删除Module?
【Qt 学习笔记】Qt常用控件 | 显示类控件 | LCD Number的使用及说明
【Qt 学习笔记】Qt常用控件 | 显示类控件 | LCD Number的使用及说明
1623 0