Skip to content
← 返回Git列表
Git任务与配置

Git 提交、历史与配置 · 查看工作区、暂存与提交至交接仓库、应用补丁与检查分支提交 ​

返回分篇目录

查看工作区、暂存与提交 ​

按 status→diff→提交前检查→add/rm→commit 顺序查阅;联合作者和复制文件扩展放在普通提交操作后。

git status · 展示 Git 仓库中文件的变更情况 ​

列出与当前检出提交相比有修改、新增和删除的文件。 更多信息:https://git-scm.com/docs/git-status。

  • 显示已暂存、未暂存及未跟踪文件的状态:
bash
git status
  • 以简短形式输出:
bash
git status {{[-s|--short]}}
  • 显示暂存区与工作目录的详细变更信息:
bash
git status {{[-vv|--verbose --verbose]}}
  • 以简短形式输出,同时包含分支信息:
bash
git status {{[-sb|--short --branch]}}
  • 显示当前贮藏区(stash)中的条目数量:
bash
git status --show-stash
  • 不显示未跟踪的文件:
bash
git status {{[-uno|--untracked-files=no]}}

git diff · 显示已跟踪文件的内容变更 ​

更多信息:https://git-scm.com/docs/git-diff。

  • 显示未暂存的更改:
bash
git diff
  • 显示所有未提交的更改(包括已暂存的):
bash
git diff HEAD
  • 仅显示已暂存(添加过但未提交)的更改:
bash
git diff --staged
  • 显示过去某段时间内所有提交的变更(日期表达式如“1 week 2 days”或 ISO 日期):
bash
git diff 'HEAD@{{{3 months|weeks|days|hours|seconds ago}}}'
  • 显示差异统计信息(如文件变更列表、直方图及总行数增删):
bash
git diff --stat {{提交}}
  • 输出自某次提交以来的文件创建、重命名及权限变更的摘要:
bash
git diff --summary {{提交}}
  • 比较两个分支或提交之间的单个文件:
bash
git diff {{分支1}}..{{分支2}} {{路径/到/文件}}
  • 将当前分支的某文件与其他分支的对应文件进行对比:
bash
git diff {{分支}}:{{路径/到/文件2}} {{路径/到/文件}}

git 提交前检查 · 提交代码前,检查变更内容、暂存区和空白错误 ​

  • 查看当前分支与文件状态:
bash
git status --short --branch
  • 检查尚未暂存的代码改动:
bash
git diff
  • 检查本次即将提交的内容:
bash
git diff --staged

比较提交、分支或限定文件时,见 git diff 完整用法。

  • 检查暂存改动中的空白错误与冲突标记:
bash
git diff --staged --check

git add · 将更改的文件添加到索引(暂存区) ​

更多信息:https://git-scm.com/docs/git-add。

  • 添加单个文件到索引:
bash
git add {{路径/到/文件}}
  • 添加所有文件(包括已跟踪的和未跟踪的):
bash
git add {{[-A|--all]}}
  • 从当前文件夹开始递归地添加所有文件:
bash
git add .
  • 只添加已跟踪的文件:
bash
git add {{[-u|--update]}}
  • 忽略的文件也添加:
bash
git add {{[-f|--force]}} -- {{路径/到/被忽略文件}}
  • 交互式挑选部分修改并暂存:
bash
git add {{[-p|--patch]}}
  • 交互式挑选指定文件的部分修改并暂存:
bash
git add {{[-p|--patch]}} {{路径/到/文件}}
  • 在交互模式下暂存文件:
bash
git add {{[-i|--interactive]}}

git rm · 从仓库索引和本地文件系统中删除文件 ​

更多信息:https://git-scm.com/docs/git-rm。

  • 从仓库索引和文件系统中删除文件:
bash
git rm {{路径/到/文件}}
  • 删除目录:
bash
git rm -r {{路径/到/目录}}
  • 从仓库索引中删除文件,但保留本地文件:
bash
git rm --cached {{路径/到/文件}}

git commit · 将文件提交到仓库 ​

更多信息:https://git-scm.com/docs/git-commit。

  • 将暂存的文件提交到仓库,附带提交说明信息:
bash
git commit {{[-m|--message]}} "{{信息}}"
  • 提交暂存的文件,并从指定文件中读取附带的提交信息:
bash
git commit {{[-F|--file]}} {{路径/到/提交信息文件}}
  • 自动暂存并提交已跟踪文件的修改和删除(不包括新文件),附带提交信息:
bash
git commit {{[-a|--all]}} {{[-m|--message]}} "{{信息}}"
  • 提交暂存的文件,并使用指定的 GPG 密钥签名(若未指定参数则使用配置文件中的设定):
bash
git commit {{[-S|--gpg-sign]}} {{密钥id}} {{[-m|--message]}} "{{信息}}"
  • 将当前暂存的更改追加到最近一次提交,并更新其哈希值:
bash
git commit --amend
  • 提交指定已跟踪路径的工作区内容,忽略其他已暂存路径(不是只取这些路径的暂存版本):
bash
git commit {{路径/到/文件1 路径/到/文件2 ...}}
  • 即使没有暂存文件也创建提交:
bash
git commit {{[-m|--message]}} "{{信息}}" --allow-empty

git coauthor · 为最新提交添加共同作者(会重写 Git 历史,已共享时需先确认历史改写约定) ​

属于 git-extras一部分。 更多信息:https://github.com/tj/git-extras/blob/main/Commands.md#git-coauthor。

  • 为最新提交添加共同作者:
bash
git coauthor {{作者姓名}} {{作者邮箱}}

git cp · 复制 Git 仓库中的文件并保留历史记录 ​

属于 git-extras 的一部分。 更多信息:https://github.com/tj/git-extras/blob/main/Commands.md#git-cp。

  • 在当前 Git 仓库下复制文件,保留在同一目录:
bash
git cp {{原文件名}} {{新文件}}
  • 复制文件到其他目录:
bash
git cp {{路径/到/源文件}} {{路径/到/新文件}}

交接仓库、应用补丁与检查分支提交 ​

bundle 用于仓库数据交接;am/apply 分别保留补丁工作流;cherry 检查两条分支的提交差异。

git bundle · 将对象和引用打包成归档文件 ​

更多信息:https://git-scm.com/docs/git-bundle。

  • 创建包含特定分支所有对象和引用的打包文件:
bash
git bundle create {{路径/到/文件.bundle}} {{分支名}}
  • 创建包含所有分支的打包文件:
bash
git bundle create {{路径/到/文件.bundle}} --all
  • 创建当前分支最近5次提交的打包文件:
bash
git bundle create {{路径/到/文件.bundle}} -5 {{HEAD}}
  • 创建最近7天提交的打包文件:
bash
git bundle create {{路径/到/文件.bundle}} --since 7.days {{HEAD}}
  • 验证打包文件是否有效且可应用到当前仓库:
bash
git bundle verify {{路径/到/文件.bundle}}
  • 解包对象并显示打包文件中的引用(会写入当前仓库对象库):
bash
git bundle unbundle {{路径/到/文件.bundle}}
  • 从打包文件中解包特定分支到当前仓库:
bash
git pull {{路径/到/文件.bundle}} {{分支名}}
  • 从打包文件创建新仓库:
bash
git clone {{路径/到/文件.bundle}}

git am · 应用补丁文件并创建提交。在通过电子邮件接收提交时非常有用 ​

另请参阅:git format-patch。 更多信息:https://git-scm.com/docs/git-am。

  • 应用本地补丁文件并提交更改:
bash
git am {{路径/到/目录.patch}}
  • 应用远程补丁文件并提交更改:
bash
curl {{[-L|--location]}} {{https://example.com/file.patch}} | git am
  • 中止应用补丁文件的过程:
bash
git am --abort
  • 尽可能应用补丁文件,将失败的代码块保存到拒绝文件中:
bash
git am --reject {{路径/到/目录.patch}}

git apply · 将补丁应用到文件和/或暂存区,但不创建提交 ​

另请参阅:git am。 更多信息:https://git-scm.com/docs/git-apply。

  • 显示补丁文件的应用详情:
bash
git apply {{[-v|--verbose]}} {{路径/到/文件}}
  • 应用补丁并将修改添加到暂存区:
bash
git apply --index {{路径/到/文件}}
  • 应用远程补丁文件:
bash
curl {{[-L|--location]}} {{https://example.com/file.patch}} | git apply
  • 应用远程补丁文件:
bash
git apply --stat --apply {{路径/到/文件}}
  • 反向应用补丁(撤销更改):
bash
git apply {{[-R|--reverse]}} {{路径/到/文件}}
  • 将补丁结果存入暂存区但不修改工作区:
bash
git apply --cached {{路径/到/文件}}

git cherry · 查找尚未应用到上游分支的提交 ​

更多信息:https://git-scm.com/docs/git-cherry。

  • 比较当前分支与上游的补丁等价性(含提交说明):- 表示上游已有等价补丁,+ 表示没有:
bash
git cherry {{[-v|--verbose]}}
  • 指定不同的上游分支和主题分支进行比较:
bash
git cherry {{上游分支}} {{主题分支}}
  • 限定比较范围到某个基准点之后的提交:
bash
git cherry {{上游分支}} {{主题分支}} {{基准点}}

继续阅读