Git 基本操作(五)

5.基本操作

Git 的工作就是创建和保存项目的快照及与之后的快照进行对比。

Git 常用的是以下 6 个命令:git clonegit pushgit addgit commitgit checkoutgit pull,后面我们会详细介绍。

一、核心命令

命令 说明
git clone 克隆远程仓库到本地
git push 推送本地提交到远程仓库
git add 将工作区修改添加到暂存区
git commit 将暂存区内容提交到本地仓库
git checkout 切换分支或恢复工作区文件
git pull 拉取远程更新并合并到当前分支

二、创建仓库

命令 说明
git init 在当前目录初始化一个新的 Git 仓库
git clone <repo> 克隆远程仓库到本地

三、提交与修改

命令 说明
git add <file> 将文件添加到暂存区
git status 查看仓库当前状态(已修改、已暂存、未跟踪等)
git diff 比较工作区与暂存区的差异
git difftool 使用外部工具查看差异
git range-diff 比较两个提交范围之间的差异
git commit -m "msg" 将暂存区内容提交到本地仓库
git reset 回退版本(可重置暂存区或工作区)
git rm 删除工作区文件并移除出暂存区
git mv 移动或重命名工作区文件
git notes 为提交添加或查看注释
git checkout 切换分支或恢复工作区文件
git switch 专门用于切换分支(更清晰)
git restore 恢复或撤销工作区/暂存区更改
git show 显示 Git 对象的详细信息(如提交、标签)

四、提交日志

命令 说明
git log 查看提交历史
git blame <file> 以列表形式显示文件的每一行是谁在何时修改的
git shortlog 按作者分组生成简洁的提交日志摘要
git describe 基于最近的标签生成一个可读的字符串描述当前提交

五、远程操作

命令 说明
git remote 管理远程仓库(添加、删除、重命名等)
git fetch 从远程获取代码但不合并
git pull 拉取远程代码并合并到当前分支
git push 推送本地提交到远程仓库
git submodule 管理包含其他 Git 仓库的子模块

六、文件状态

1. 工作区 (Working Directory)

  • 实际操作文件的地方。
  • 文件状态:未跟踪 (Untracked) 或 已修改 (Modified)。

2. 暂存区 (Staging Area / Index)

  • 位于 .git/index,临时存放准备提交的内容。
  • 文件状态:已暂存 (Staged)。

3. 本地仓库 (Local Repository)

  • 位于 .git 目录,存储所有提交历史。
  • 文件状态:已提交 (Committed) 后回到已跟踪状态。

状态转换流程

步骤 命令 状态变化
创建新文件 touch newfile.txt 未跟踪 (Untracked)
添加到暂存区 git add newfile.txt 未跟踪 → 已跟踪 (Tracked)
修改已跟踪文件 echo "hi" > newfile.txt 已跟踪 → 已修改 (Modified)
将修改添加到暂存区 git add newfile.txt 已修改 → 已暂存 (Staged)
提交到本地仓库 git commit -m "msg" 已暂存 → 已提交 (Committed)

使用 git status 随时查看当前文件状态。

七、实例

# 1. 初始化仓库(或克隆远程仓库)
git init
# 或 git clone <url>

# 2. 添加所有文件到暂存区
git add .

# 3. 提交到本地仓库
git commit -m "Initial commit"

八、Git 2.23+ 新命令

  • git switch​:专门用于切换分支,避免 checkout 的多义性。

    • git switch <branch> 切换分支
    • git switch -c <new-branch> 创建并切换新分支
  • git restore:专门用于恢复文件。

    • git restore <file> 从暂存区恢复工作区文件
    • git restore --staged <file>​ 将文件从暂存区撤出(等同于 git reset HEAD