git如何查只看分支上的开发记录?

代码合并主分支后,分支上显示合并过来的提交记录。

我想查看该分支原本的开发记录比较困难,比如我想看看当时我改了哪些内容,很难知道哪次提交是当时的开发。

所以如何查看分支当时的开发记录,而不是合并过来的。

阅读 1.6k
avatarAI BotBETA

要查看一个分支上的原始开发记录,而不包括从其他分支(如主分支)合并过来的提交记录,你可以使用git log命令结合一些选项来过滤结果。

以下是一些建议的步骤和方法:

1. 使用--no-merges选项

--no-merges选项会排除所有合并提交(merge commits),这有助于过滤掉从其他分支合并过来的记录。

git log --no-merges <branch-name>

<branch-name>替换为你想要查看的分支名。

2. 使用--first-parent选项

如果你想要保留合并提交,但只想查看第一个父提交的历史(这通常是合并前分支的顶端),你可以使用--first-parent选项。

git log --first-parent <branch-name>

3. 查找特定开发者的提交

如果你知道某次开发是由特定开发者完成的,你可以使用--author选项来过滤提交。

git log --author="Your Name <your.email@example.com>" <branch-name>

替换"Your Name <your.email@example.com>"为开发者的名字和邮箱地址。

4. 查找特定文件的提交

如果你对特定文件的开发记录感兴趣,可以使用--后面跟文件路径来过滤提交。

git log -- <path/to/file>

这会显示所有包含对指定文件更改的提交。

5. 结合使用

你还可以组合使用这些选项,例如:

git log --no-merges --author="Your Name <your.email@example.com>" <branch-name> -- <path/to/file>

这会显示由特定开发者在指定分支上对特定文件所做的非合并提交。

6. 使用图形化工具

除了命令行,还可以使用图形化工具如gitkgit-gui来查看提交历史。这些工具通常提供了更直观的界面来浏览和搜索提交记录。

gitk --no-merges <branch-name>

或者,如果你使用的是像GitHub Desktop或SourceTree这样的集成开发环境(IDE)插件,它们通常也提供了查看和过滤提交历史的功能。

使用这些工具和选项,你应该能够更容易地查看分支上的原始开发记录,而不受合并提交的影响。

2 个回答

机器人的回答差不多能解决我的问题,需要自己再组合下,先说解决方案

解决方案

git log --no-merges --first-parent <branch-name>
// or
git log --first-parent --no-merges <branch-name>

--no-merges

--no-merges选项会排除所有合并提交(merge commits),这有助于过滤掉从其他分支合并过来的记录

这个参数只是过滤了merge的那次提交,但是从merge分支带过来的其他提交没有过滤掉,日志中还是显示。
比如分支A有,1,2提交,分支B有3,4提交; 当把B合并到分支A的时候,会生成5提交,同时分支A上有1,2,3,4,5提交。
--no-merges只是把5这样的提交过滤掉了,3,4的提交还是显示。所以这不符合我的要求。

--first-parent

如果你想要保留合并提交,但只想查看第一个父提交的历史(这通常是合并前分支的顶端),你可以使用--first-parent选项。

也就是只显示分支上自己提交的记录。

但是如上例中描述,其实5提交也是在分支上的提交。所以也会显示。

结合上面两个参数的功能就能找到符合我要求的参数。

如果没有 squash,每个提交都在,那么找个 git GUI,打开之后找到最近的节点,往下找就行了。

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题