文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

查看 Git 提交中发生了什么变化

2024-12-03 07:26

关注

Git 提供了几种方式可以帮你快速查看提交中哪些文件被改变。

如果你每天使用 Git,应该会提交不少改动。如果你每天和其他人在一个项目中使用 Git,假设 每个人 每天的提交都是安全的,你会意识到 Git 日志会变得多么混乱,似乎永恒地滚动着变化,却没有任何迹象表明修改了什么。

那么,你该怎样查看指定提交中文件发生哪些变化?这比你想的容易。

查看提交中文件发生的变化

要想知道指定提交中哪些文件发生变化,可以使用 git log --raw 命令。这是发现一个提交影响了哪些文件的最快速、最方便的方法。git log 命令一般都没有被充分利用,主要是因为它有太多的格式化选项,许多用户在面对很多选择以及在一些情况下不明所以的文档时,会望而却步。

然而,Git 的日志机制非常灵活,--raw 选项提供了当前分支中的提交日志,以及更改的文件列表。

以下是标准的 git log 输出:

  1. $ git log
  2. commit fbbbe083aed75b24f2c77b1825ecab10def0953c (HEAD -> dev, origin/dev)
  3. Author: tux <tux@example.com>
  4. Date: Sun Nov 5 21:40:37 2020 +1300
  5.  
  6. exit immediately from failed download
  7.  
  8. commit 094f9948cd995acfc331a6965032ea0d38e01f03 (origin/master, master)
  9. Author: Tux <tux@example.com>
  10. Date: Fri Aug 5 02:05:19 2020 +1200
  11.  
  12. export makeopts from etc/example.conf
  13.  
  14. commit 76b7b46dc53ec13316abb49cc7b37914215acd47
  15. Author: Tux <tux@example.com>
  16. Date: Sun Jul 31 21:45:24 2020 +1200
  17.  
  18. fix typo in help message

即使作者在提交消息中指定了哪些文件发生变化,日志也相当简洁。

以下是 git log --raw 输出:

  1. $ git log --raw
  2. commit fbbbe083aed75b24f2c77b1825ecab10def0953c (HEAD -> dev, origin/dev)
  3. Author: tux <tux@example.com>
  4. Date: Sun Nov 5 21:40:37 2020 +1300
  5.  
  6. exit immediately from failed download
  7.  
  8. :100755 100755 cbcf1f3 4cac92f M src/example.lua
  9.  
  10. commit 094f9948cd995acfc331a6965032ea0d38e01f03 (origin/master, master)
  11. Author: Tux <tux@example.com>
  12. Date: Fri Aug 5 02:05:19 2020 +1200
  13.  
  14. export makeopts from etc/example.conf
  15. :100755 100755 4c815c0 cbcf1f3 M src/example.lua
  16. :100755 100755 71653e1 8f5d5a6 M src/example.spec
  17. :100644 100644 9d21a6f e33caba R100 etc/example.conf etc/example.conf-default
  18.  
  19. commit 76b7b46dc53ec13316abb49cc7b37914215acd47
  20. Author: Tux <tux@example.com>
  21. Date: Sun Jul 31 21:45:24 2020 +1200
  22.  
  23. fix typo in help message
  24.  
  25. :100755 100755 e253aaf 4c815c0 M src/example.lua

这会准确告诉你哪个文件被添加到提交中,哪些文件发生改变(A 是添加,M 是修改,R 是重命名,D 是删除)。

Git whatchanged

git whatchanged 命令是一个遗留命令,它的前身是日志功能。文档说用户不应该用该命令替代 git log --raw,并且暗示它实质上已经被废弃了。不过,我还是觉得它是一个很有用的捷径,可以得到同样的输出结果(尽管合并提交的内容不包括在内),如果它被删除的话,我打算为它创建一个别名。如果你只想查看已更改的文件,不想在日志中看到合并提交,可以尝试 git whatchanged 作为简单的助记符。

查看变化

你不仅可以看到哪些文件发生更改,还可以使用 git log 显示文件中发生了哪些变化。你的 Git 日志可以生成一个内联差异,用 --patch 选项可以逐行显示每个文件的所有更改:

  1. commit 62a2daf8411eccbec0af69e4736a0fcf0a469ab1 (HEAD -> master)
  2. Author: Tux <Tux@example.com>
  3. Date: Wed Mar 10 06:46:58 2021 +1300
  4.  
  5. commit
  6.  
  7. diff --git a/hello.txt b/hello.txt
  8. index 65a56c3..36a0a7d 100644
  9. --- a/hello.txt
  10. +++ b/hello.txt
  11. @@ -1,2 +1,2 @@
  12. Hello
  13. -world
  14. +opensource.com

在这个例子中,“world” 这行字从 hello.txt 中删掉,“opensource.com” 这行字则添加进去。

如果你需要在其他地方手动进行相同的修改,这些补丁patch可以与常见的 Unix 命令一起使用,例如 diff 与 patch。补丁也是一个好方法,可以总结指定提交中引入新信息的重要部分内容。当你在冲刺阶段引入一个 bug 时,你会发现这里的内容就是非常有价值的概述。为了更快地找到错误的原因,你可以忽略文件中没有更改的部分,只检查新代码。

用简单命令得到复杂的结果

你不必理解引用、分支和提交哈希,就可以查看提交中更改了哪些文件。你的 Git 日志旨在向你报告 Git 的活动,如果你想以特定方式格式化它或者提取特定的信息,通常需要费力地浏览许多文档来组合出正确的命令。幸运的是,关于 Git 历史记录最常用的请求之一只需要一两个选项:--raw 与 --patch。如果你不记得 --raw,就想想“Git,什么改变了?”,然后输入 git whatchanged。 

 

来源:Linux中国内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯