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 · 显示已跟踪文件的内容变更
- 显示未暂存的更改:
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 --checkgit 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 · 从仓库索引和本地文件系统中删除文件
- 从仓库索引和文件系统中删除文件:
bash
git rm {{路径/到/文件}}- 删除目录:
bash
git rm -r {{路径/到/目录}}- 从仓库索引中删除文件,但保留本地文件:
bash
git rm --cached {{路径/到/文件}}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-emptygit 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 · 将对象和引用打包成归档文件
- 创建包含特定分支所有对象和引用的打包文件:
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 · 查找尚未应用到上游分支的提交
- 比较当前分支与上游的补丁等价性(含提交说明):- 表示上游已有等价补丁,+ 表示没有:
bash
git cherry {{[-v|--verbose]}}- 指定不同的上游分支和主题分支进行比较:
bash
git cherry {{上游分支}} {{主题分支}}- 限定比较范围到某个基准点之后的提交:
bash
git cherry {{上游分支}} {{主题分支}} {{基准点}}继续阅读
- Git完整实践与解答
- Git任务与配置
- Git任务与配置