%% # 纲要 > 主干纲要、Hint/线索/路标 # Q&A #### 已明确 #### 待明确 > 当下仍存有的疑惑 **❓<font color="#c0504d"> 有什么问题?</font>** # Buffer ## 闪念 > sudden idea ## 候选资料 > Read it later %% # 查看工作区状态——git status ![[_attachment/05-工具/git 使用/git 使用.assets/IMG-git 使用-47B3CE223AF8D6E922B39791794B3B3D.png|398]] `git stauts [options]`: - `-s`:简短格式输出。文件前的标记含义如下: - `??`:未跟踪的文件。 - `A`:已添加到暂存区的新文件; - `M`:已修改的文件(红 M 表示有删除行,绿 M 表示新增行) - `D`:已删除的文件 - `-b`:显示当前**分支名称**和**分支状态**(如**与上游分支的差异**) - `--show-stash`:显示**与当前分支关联的 stash**(若存在),供快速查看是否有任何未应用的 stash ![[_attachment/05-工具/git 使用/git 使用.assets/IMG-git 使用-B9C9AAD0FE198EC6E8200B3D22116F9C.png|375]] <br> # 查看提交历史——git log `git log [options] [revision range]` :查看**自指定提交(默认 HEAD) ==向后追溯可达==的提交历史** 选项参数: - `<revision range>`:单个提交,多个独立提交,或者**提交范围**例如 `commit1..commit2` - `^commit` 表示由该提交 "**不可追溯到达**" 的提交 - `--all`:显示**所有分支的提交历史**(包括**远程跟踪分支**) - `--follow <file>`:显示 **==某个文件==的历史变更记录**,包括该文件在重命名后的历史。 - `--oneline`:每个提交用一行显示(省略提交者、日期) - `--graph`:显示**图形化表示的分支合并历史**(分支图读法参见[^3]),通常与 `--oneline` 搭配 - `--merge`: - `--reverse`: 颠倒日志的显示顺序,从最旧的提交开始显示。 - `--pretty=<format>`:指定**输出格式**,可选项有: - `online`:每个提交用一行,显示**简短哈希值和提交消息**; - `short`:显示提交哈希值、作者和提交消息。 - `medium`:显示提交哈希值、作者、提交日期和提交消息(默认格式)。 - `full`:显示完整的提交信息,包括作者和提交者的详细信息。 - `format:"..."`:自定义输出格式,例如 `--pretty=format:"%h - %an, %ar : %s"` - 显示详细变更内容: - `--stat`: 显示每次提交的**统计信息**(**发生修改的文件** & **文件修改的行数**) - `--name-only`:显示每个提交中**更改的文件列表**; - `--name-status`:显示每个提交中**更改的文件列表** & **文件变更状态**(新增 A、修改 M、删除 D)。 - `-p`:显示每个**提交引入的差异(patch)**。对于每个提交,显示**详细的代码改动**。`` - 限制范围: - `--author=<pattern>`:只显示**指定作者**的提交(可指定**部分名称**或基于**正则匹配**) - `--grep=<pattern>`:只显示**提交消息**中**匹配指定模式**的提交 - `-n <limit>` :显示最近 `limit` 条提交记录 - `--since=<date>` 或 `--after=<date>`:只显示自指定日期之后的提交 - 例如 `git log --after="2024-01-01"` - `--until=<date>` 或 `--before=<date>`:只显示在指定日期之前的提交。 - 例如 `git log --until="2024-01-01"` ### 使用示例 ```shell # 列出所有属于A分支但是不属于B分支的提交 git log <branchA> --not <branchB> # 等价于 `git log <branchA> ^<branchB>` # 列出所有可由 foo、bar 追溯到,但不能由 `baz` 追溯到的提交历史 git log foo bar ^baz # 列出HEAD不同于origin的提交历史 git log origin..HEAD # 等价于git log HEAD ^origin # 查看某个文件的详细历史记录,包括重命名前的记录 git log --follow -p -- <file> # 显示所有分支的简洁提交历史 git log --all --oneline --decorate --graph ``` ### 选项说明 `--oneline` 显示: ![[_attachment/05-工具/git 使用/git 使用.assets/IMG-git 使用-C70491864FE0B3BA2E7B1D53169FE2C9.png|468]] ![[_attachment/05-工具/git 使用/git 使用.assets/IMG-git 使用-15F0A24EDAE6D8132F7EA2170A530D97.png|560]] `stat` 显示: ![[_attachment/05-工具/git 使用/git 使用.assets/IMG-git 使用-A41FF691A6C99B8C7DD68F4DA219FF97.png|463]] `--graph` 显示: ![[_attachment/05-工具/git 使用/git 使用.assets/IMG-git 使用-5C1B5ABD33E70B9F9C3034BD742DF61B.png|483]] > [!caution] --graph 显示的历史合并历史,**对同一分支是按照时序排列,但不同分支之间不是** > > ![[_attachment/05-工具/git 使用/git 使用.assets/IMG-git 使用-09D00D719B9B8523CD9BD8489C9D6E89.png]] <br><br> # 查看提交的详细内容——git show `git show [<options>] [<object>...]`:查看**指定 git 对象**的详细信息 - `<object>`:可以是 blobs,tree,tags,commits; - `<commit>:<path>`:查看指定提交中的**指定文件或目录的内容**(需给出**相对于`.git`的路径**) - `--stat`: 显示提交的**统计信息**(**发生修改的文件** & **文件修改的行数**) - `--name-only`:显示提交中**更改的文件列表**; - `--name-status`:显示提交中**更改的文件列表** & **文件变更状态**(新增 A、修改 M、删除 D)。 使用示例: ```bash # 查看HEAD的详细信息 git show # 查看最近一次提交中`example.txt`的文件内容 git show HEAD:example.txt # 显示指定提交中某个文件的内容 git show <commit>:<filepath> # 显示某次提交发生变化的文件 git show --name-only [commit] ``` > [!example] > > ![[_attachment/05-工具/git 使用/git 信息查看.assets/IMG-git 信息查看-FA025660C5309F5687F81837E1B6B0DA.png|483]] > > <br><br> # 参考资料 # Footnotes