代码合并主分支后,分支上显示合并过来的提交记录。
我想查看该分支原本的开发记录比较困难,比如我想看看当时我改了哪些内容,很难知道哪次提交是当时的开发。
所以如何查看分支当时的开发记录,而不是合并过来的。
代码合并主分支后,分支上显示合并过来的提交记录。
我想查看该分支原本的开发记录比较困难,比如我想看看当时我改了哪些内容,很难知道哪次提交是当时的开发。
所以如何查看分支当时的开发记录,而不是合并过来的。
要查看一个分支上的原始开发记录,而不包括从其他分支(如主分支)合并过来的提交记录,你可以使用git log
命令结合一些选项来过滤结果。
以下是一些建议的步骤和方法:
--no-merges
选项--no-merges
选项会排除所有合并提交(merge commits),这有助于过滤掉从其他分支合并过来的记录。
git log --no-merges <branch-name>
将<branch-name>
替换为你想要查看的分支名。
--first-parent
选项如果你想要保留合并提交,但只想查看第一个父提交的历史(这通常是合并前分支的顶端),你可以使用--first-parent
选项。
git log --first-parent <branch-name>
如果你知道某次开发是由特定开发者完成的,你可以使用--author
选项来过滤提交。
git log --author="Your Name <your.email@example.com>" <branch-name>
替换"Your Name <your.email@example.com>"
为开发者的名字和邮箱地址。
如果你对特定文件的开发记录感兴趣,可以使用--
后面跟文件路径来过滤提交。
git log -- <path/to/file>
这会显示所有包含对指定文件更改的提交。
你还可以组合使用这些选项,例如:
git log --no-merges --author="Your Name <your.email@example.com>" <branch-name> -- <path/to/file>
这会显示由特定开发者在指定分支上对特定文件所做的非合并提交。
除了命令行,还可以使用图形化工具如gitk
或git-gui
来查看提交历史。这些工具通常提供了更直观的界面来浏览和搜索提交记录。
gitk --no-merges <branch-name>
或者,如果你使用的是像GitHub Desktop或SourceTree这样的集成开发环境(IDE)插件,它们通常也提供了查看和过滤提交历史的功能。
使用这些工具和选项,你应该能够更容易地查看分支上的原始开发记录,而不受合并提交的影响。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
4 回答4.5k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
机器人的回答差不多能解决我的问题,需要自己再组合下,先说解决方案
解决方案
--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提交也是在分支上的提交。所以也会显示。
结合上面两个参数的功能就能找到符合我要求的参数。