2023-05-22
git
00

目录

查看提交历史git log命令的所有高级用法
1. 显示全部 commit 信息
2. 查找今天的commit 记录
3. 显示单行的 commit 信息
4. 显示某个commit 的详细更改信息
5. 限制 commit 数量
6. 按时间范围显示 commit 历史记录
7. 按作者过滤 commit 历史记录
8. 搜索commit 包含特定关键字的提交
删除所有本地所有分支:
比较 Git 的 diff 代码

git的实用技巧

这篇文章主要介绍了Git的一些实用技巧,包括高级用法的git log命令、查找特定时间段的提交记录、显示单行的commit信息、使用git show查看详细更改信息、限制commit数量、按作者过滤commit历史记录、搜索包含特定关键字的提交,以及如何使用外部工具比较Git的diff代码。

查看提交历史git log命令的所有高级用法

1. 显示全部 commit 信息

jsx
git log --graph --decorate --all --pretty=format:"%C(auto,green)%h%Creset - %C(auto,blue)%ad%Creset - %C(auto,red)%<(10)%d%Creset | %s [%C(auto,magenta)%an%Creset]" --date=format:'%Y/%m/%d %H:%M:%S'

下面是 git log 命令中各个参数的详细解释,以及它们的作用:

  1. -graph 参数在日志信息中绘制了 Git 仓库的版本历史关系图。
  2. -decorate 参数为 Git 仓库的版本历史信息增加分支、标签的展示。
  3. -all 参数在查找日志时,检查所有分支(包括远程分支)。
  4. -pretty=format:"%C(auto,green)%h%Creset - %C(auto,blue)%ad%Creset - %C(auto,red)%<(10)%d%Creset | %s [%C(auto,magenta)%an%Creset]" 这个参数定制了日志的输出格式。它将输出显示为提交哈希、提交日期、分支信息、提交消息以及提交作者的信息。
    • %C(auto,green) - 输出哈希值,带有自动颜色选择器。
    • %Creset - 重置颜色为默认值。
    • %h - 缩短后的提交哈希值。
    • %C(auto,blue) - 输出提交日期,带有自动颜色选择器。
    • %ad - 提交日期格式化。
    • %C(auto,red) - 输出提交分支信息,带有自动颜色选择器。
    • %<(10)%d - 将分支信息格式化为长度为 10 的左对齐字符串。
    • %s - 提交信息摘要。
    • %C(auto,magenta) - 输出提交作者的名字,带有自动颜色选择器。
    • %an - 提交作者的名字。
  5. -date=format:'%Y/%m/%d %H:%M:%S' 参数定义日期的格式为 %Y/%m/%d %H:%M:%S

总体而言,此命令可以让您以一种可视化和易读的形式查看 Git 仓库中的提交历史和分支关系,并为它们附加详细的格式化日志和日期信息。

此命令将会显示类似以下格式的信息:

https://image.myxuechao.com/blog/git-one.png

2. 查找今天的commit 记录

要查找今天提交的 commit 记录,可以使用 Git 的 git log 命令中的时间限制选项进行过滤。以下是使用 git log 命令过滤出今天提交的 commit 记录的步骤:

  1. 运行以下命令,将显示今天所提交的 commit:

    git log --graph --decorate --all --pretty=format:"%C(auto,green)%h%Creset - %C(auto,blue)%ad%Creset - %C(auto,red)%<(10)%d%Creset | %s [%C(auto,magenta)%an%Creset]" --date=format:'%Y/%m/%d %H:%M:%S' --since="today 00:00:00" --until="today 23:59:59"

    此命令将会显示类似以下格式的信息:

    https://image.myxuechao.com/blog/git-tow.png

    其中,-date 选项用于指定日期格式,-since 选项用于指定时间的起点,-until 用于指定时间的结束点,此处设置为一天内提交的 commit。

    执行该命令后,您将会看到在今天提交的 commit 记录。如果今天没有提交过任何 commit,将没有任何输出。

希望这个命令可以帮助您查找到今天提交的 commit 记录。

3. 显示单行的 commit 信息

jsx
git log --oneline

4. 显示某个commit 的详细更改信息

jsx
git show <commit>

git show 命令中的 --pretty 选项用于指定要显示的输出格式。这对于 Git 版本库有许多好处,包括:

  1. 显示更易读的信息:您可以使用 -pretty 选项将 Git 显示的输出格式化成更易读的文本,这样您就可以在终端上更清晰、更易于理解地查看信息。
  2. 可以根据需要查看不同的数据:默认情况下,Git 显示的是所有与提交关联的信息,包括作者、提交日期、提交信息和更改的内容等。但是,当您只想查看其中的一部分时,-pretty 选项可以帮助您快速找到所需的信息。

下面是 --pretty 选项可用的不同参数:

  • short:显示简短的提交信息(无需更改)
  • medium:显示相对短的提交信息
  • full:显示完整的提交信息(包括更改信息)
  • fuller:以非常详细的方式显示提交信息

例如,使用 --pretty=short 选项,可以以更简洁的方式显示提交信息的摘要。示例命令如下:

jsx
git show --pretty=short <commit>

5. 限制 commit 数量

jsx
git log -n <number>

6. 按时间范围显示 commit 历史记录

jsx
git log --since=<date1> --until=<date2>

7. 按作者过滤 commit 历史记录

jsx
git log --author=<author>

8. 搜索commit 包含特定关键字的提交

jsx
git log --grep=<pattern>

以下是使用 --grep=<pattern> 选项的示例:

jsx
git log --grep="fix"

上述命令将在所有提交的注释中搜索关键字 bug fix,并输出所有包含该关键字的提交。

除了使用字符串作为模式外,如果要查找特定时间范围内的提交记录,请使用 --since 和 --until 选项结合使用,例如:,例如:

jsx
git log --grep="fix" --since="3 days ago"

上述命令将搜索最近 3 天内包含关键字 bug fix 的提交记录。

删除所有本地所有分支:

  • 只保留master 其他的全部删除
jsx
git branch | grep -v "master" | xargs git branch -D

该命令可以批量删除本地所有分支,但不会提示确认,也会无条件地删除所有不需要的分支。但是,master分支不会被删除。如果您想保留某些分支,请先使用git branch命令找到要保留的分支,然后使用grep命令进行筛选。请谨慎操作并备份要删除的分支。 💡

  • 要删除本地存储库中除了 mastertestdev 之外的所有分支,请使用以下命令:👇
jsx
git branch | grep -Ev "master|test|dev" | xargs git branch -D

使用此命令可以批量删除 Git 本地仓库中的分支。首先,使用 git branch 命令列出所有分支,然后在正则表达式模式中使用 grep 命令过滤掉不需要删除的分支,例如 mastertestdev。接下来,将过滤后的分支名称作为参数传递给 xargs 命令。最后,xargs 命令将这些分支名称作为参数传递给 git branch -D 命令,以便一次性地删除所有过滤后的分支。 🔍

比较 Git 的 diff 代码

🛠️ 工具链接:BeyondCompareSourceTree

👉 使用外部工具 BeyondCompare 比较 Git 的 diff 代码,可以方便地查看文件的更改情况。

👉 如果您使用 Mac 平台,可以通过以下步骤将 BeyondCompare 配置为 SourceTree 的外部差异工具:

✅ 打开 BeyondCompare,打开主菜单,选中 安装命令行工具 🚀

https://image.myxuechao.com/blog/git-three.png

✅ 在使用 BeyondCompare 外部差异工具之前,需要在命令行中建立连接。(这一步可做可不做) 🔌

在使用 "BeyondCompare" 外部差异工具之前,需要在命令行中建立连接。👇

jsx
ln /Applications/Beyond\ Compare.app/Contents/MacOS/bcomp /usr/local/bin/

✅ 打开 SourceTree,打开主菜单,选中 diff 选项卡,配置:

  • 可视对比工具:自定义…
  • 比较命令:/usr/local/bin/bcomp
  • 参数:$LOCAL $REMOTE
  • 合并工具:自定义…
  • 合并命令:/usr/local/bin/bcomp
  • 参数:$LOCAL $REMOTE $BASE $MERGED

https://image.myxuechao.com/blog/git-fore.png

😎 然后您就可以在 SourceTree 中愉快地查看 Git 的 diff 代码了!

✅打开sourcetree,选中origin/release/v1.1.8,右键选择与当前对比分支对比(dev-UnifiedFeeItemDataSource)

https://image.myxuechao.com/blog/git-five.png

在右下方出现:

https://image.myxuechao.com/blog/git-six.png

为了比较外部的差异,Sourcetree会自动加载 Beyond Compare 并进行文件的比较:

https://image.myxuechao.com/blog/git-seven.png

左侧为当前分支 dev-UnifiedFeeItemDataSource,右侧为对比分支 origin/release/v1.1.8

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:LiuXueChao

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!