git log查看全部日志有很多重复的commitId

本文介绍如何解决使用git log查看提交记录时出现重复Commit ID的问题,并提供了解决方案及如何通过revert指令撤销指定的commit。

1 问题

  • 通过git log查看commit记录时,有很多重复的commit id
  • 在这里插入图片描述

2 问题解释

  • 每次的重复都是一个新的循环,越往后,展示的commit数量越多,每个新的循环,都增加了一条commit
  • 可能是我更新代码的方式导致的,我更新是通过git rebase upstream/dev

3 解决方式

  • 增加数量参数
  • 展示最新10条git commit log

git log -10
在这里插入图片描述

这样不会出现循环的问题,方便我们查阅本地的commit id

  • 注: 这些commit id都是本地的,用于本地的reset,或者 revert

4 目的:通过revert指令撤销commit

  • 使用命令 git revert commitId, 不用加引号

git revert 408d1abb8a55eeb19978ed20fe1966c529441914

  • 重新 push到远程仓库即可
<think>我们正在查找查看git commit id的方法。根据之前的上下文,我们知道commit id是Git中每个提交的唯一标识符,通常是一个40位的SHA-1哈希值(现在也有支持SHA-256的,但默认还是SHA-1)。以下是几种查看commit id的常用方法: 1. **使用`git log`命令**:这是最常用的方法,它会显示提交历史,包括每个提交的完整ID、作者、日期和提交信息。 ```bash git log ``` 默认情况下,`git log`会显示完整的提交ID。如果希望以简洁的方式显示(例如只显示前7位),可以添加`--abbrev-commit`选项: ```bash git log --abbrev-commit ``` 2. **使用`git show`命令**:查看某个特定提交的详细信息,包括其提交ID。 ```bash git show [commit_id] #如果不指定commit_id,则默认显示当前HEAD所指向的提交 ``` 例如,查看最新提交的ID和详细信息: ```bash git show ``` 3. **使用`git rev-parse`命令**:这个命令用于解析特定引用(如分支名、标签名)对应的提交ID。 ```bash git rev-parse HEAD # 查看当前分支最新提交的完整ID git rev-parse --short HEAD # 查看当前分支最新提交的短ID(通常是7位) ``` 4. **使用`git reflog`命令**:该命令显示引用日志,记录了HEAD和分支的变更历史,包括被重置(reset)或修改的提交。这对于找回丢失的提交很有用。 ```bash git reflog ``` 5. **通过`git commit --amend`操作时查看**:当使用`git commit --amend`修改最近一次提交时,在提交信息编辑界面中,通常会在注释中看到原提交的Change-Id(在Gerrit环境中)以及提交ID(在注释上方会显示原提交的ID,但注意这并非当前新提交的ID,而是将要被替换的提交的ID)。不过,这种方法并不是直接查看commit id的方法,而是间接的。 6. **查看特定文件的提交历史**:使用`git blame`可以查看文件的每一行是由谁在哪个提交中修改的,并会显示提交ID。 ```bash git blame <file_path> ``` 7. **使用别名简化查看**:可以配置别名来快速查看简化的提交历史。例如,配置一个别名`git lg`: ```bash git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" ``` 然后使用`git lg`查看美观简洁的提交历史。 根据引用[1],`git commit`命令用于提交更改,而提交后就会产生一个commit id。在引用[2]中提到,Gerrit会为每个提交生成一个唯一的Change-Id,但这与Git本身的commit id不同。Change-Id是Gerrit用于跟踪同一组修改多次上传的标识,而commit id是Git的唯一提交标识。 因此,用户可以通过上述方法(尤其是前4种)来查看commit id。 **注意**: 在Gerrit环境中,提交信息中会包含一个Change-Id,但这不是Git的原生commit id,而是Gerrit添加的。如果要查看Gitcommit id,仍需使用上述Git命令。 [^1]: [git commit 命令详解](#) [^2]: [git commit与change-id的搭配使用技巧](#) </think>### 查看 Git Commit ID 的方法 以下是查看 Git 提交 ID 的常用方法及其详细说明: #### 1. **使用 `git log` 查看完整提交历史** ```bash git log ``` - **效果**:显示完整的提交历史,包括: - Commit ID(完整的 40 位 SHA-1 哈希值) - 作者信息 - 提交日期 - 提交描述 - **示例输出**: ``` commit 2f9e0f6a7d1b5c8e3a2f4b6c8d0e1f3a5b7d9c0e (HEAD -> main) Author: John Doe <john@example.com> Date: Fri Aug 4 14:30:22 2023 +0800 Fix login validation bug ``` #### 2. **查看简洁版提交记录** ```bash git log --oneline ``` - **效果**:每行显示一条提交记录,包含: - 缩略 Commit ID(前 7 位) - 提交描述 - **适用场景**:快速浏览项目历史 - **示例输出**: ``` 2f9e0f6 Fix login validation bug 8a3b1c2 Update README.md ``` #### 3. **查看指定文件的修改历史** ```bash git blame filename ``` - **效果**:显示文件每行代码对应的: - 提交者 - 提交时间 - 缩略 Commit ID(前 8 位) - **示例输出**: ``` 2f9e0f6a (John Doe 2023-08-04 14:30:22 +0800 1) function validate() { 8a3b1c29 (Jane Smith 2023-08-03 10:15:44 +0800 2) // Validation logic ``` #### 4. **查看当前分支最新提交 ID** ```bash git rev-parse HEAD ``` - **效果**:直接输出当前 HEAD 指向的完整 Commit ID - **输出示例**: ``` 2f9e0f6a7d1b5c8e3a2f4b6c8d0e1f3a5b7d9c0e ``` #### 5. **查看引用日志(含误删提交)** ```bash git reflog ``` - **效果**:显示所有 HEAD 变更记录,包括: - 操作的简化 Commit ID - 操作类型(如 commit/reset/checkout) - 操作描述 - **适用场景**:找回被 `reset --hard` 删除的提交[^3] - **输出示例**: ``` 2f9e0f6 (HEAD -> main) HEAD@{0}: commit: Fix login validation bug 8a3b1c2 HEAD@{1}: checkout: moving from feature to main ``` #### 6. **查看特定提交的完整 ID** ```bash git show --format="%H" -s 2f9e0f6 ``` - **参数说明**: - `%H`:完整 Commit ID - `%h`:缩略 Commit ID(前 7 位) - `-s`:隐藏差异内容 --- ### 🔍 关键差异说明 | 方法 | 输出内容 | 适用场景 | |---------------------|----------------------------|----------------------------| | `git log` | 完整历史记录 | 查看项目整体演进 | | `git log --oneline` | 简洁提交列表 | 快速定位关键提交 | | `git blame` | 代码行级修改记录 | 追溯特定代码的修改历史 | | `git reflog` | 所有 HEAD 变更记录 | 恢复误操作的提交[^3] | | `git rev-parse HEAD`| 当前提交完整 ID | 脚本中获取当前状态 | > **注意**:在 Gerrit 环境下,`commit --amend` 会保留原 Change-Id,但会生成新的 Commit ID[^2]。若需保持 Change-Id 不变,需手动复制原 ID 到提交信息中[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值