【问题标题】:Git: Show every line added by user in current branchGit:显示用户在当前分支中添加的每一行
【发布时间】:2012-07-27 00:04:40
【问题描述】:

当我在某个 github 项目上工作时,我希望某个“非技术”人员能够更好地了解我实际在做什么。我想用我添加到这个项目的主分支的所有代码创建一个文本文件。我想把它放在一个文本编辑器中并向下滚动所有的屏幕,不管有多少屏幕。这基本上就是我想要的,因此,“行数”或“字符数”统计数据不会产生相同的影响。

具体来说,我想展示的是: (第一选择)我曾经添加的所有行,即使它们后来被删除。

(第二选择)我在最新版本中贡献的所有行(我们只有一个分支)

有没有办法做到这一点,或者至少打印出当前分支中的所有行? (反正我写了超过 90%)

我知道这本身并没有多大用处,但我觉得这是一个与更有用的东西(例如行数)相去甚远的脚本。

背景 -> 我对 Git 比较陌生,我在 Windows 的命令行中使用它。我有一些 linux 经验,所以这不会太困扰我。我也在为这个项目使用 Github,并且我可以访问 Windows 客户端的 github(虽然我并没有真正使用它)。

【问题讨论】:

    标签: git github github-for-windows


    【解决方案1】:

    试试这个:

    git show $(git rev-list --author="Your Name" HEAD)
    

    这显示了差异,而不是“添加的行”,但差异更有意义。没有任何自动化程序可以决定被不同行替换的行应该被视为添加还是修改。

    【讨论】:

    • 同意添加/修改将很难自动确定。此命令似乎显示添加、删除和现有行。我可以一次显示现有行,但是每次通过提交修改文件时,此命令会打印文件的全部内容吗?我宁愿不那样做。尽管如此,这仍然是一个很大的帮助,作为一个开始的地方。谢谢!
    • 它不打印全部内容,只是一个常规的差异(添加和删除的行,包括一些未更改的相邻行以提供上下文)。您可以通过添加 -U0 来消除上下文行。甚至无法阅读差异的人要求知道程序员在做什么?给他们看一些随机文件的 hexdump,让他们看直到他们离开。
    • 这个答案似乎有效。它产生的输出大小与另一个似乎有效的答案非常相似。非常感谢您在我发表评论后回来并提供更多信息!虽然我想投票并接受这两个答案,但我不确定该怎么做,但我觉得我应该接受这个答案,因为它首先出现。如果有人正在阅读本文,请也投票支持另一个答案,只要它看起来正确。
    【解决方案2】:

    您可以尝试以下方法来获得所有更改的“最小”(零行上下文而不是三行)补丁:

    for h in $(git --no-pager log --author='name' --format='%H' HEAD); do git --no-pager diff-tree -U0 $h; done >mychanges.txt
    

    mychanges.txt 应该让“非技术人员”对你所做的事情有所了解;他们真正需要了解的是,以+ 开头的行是您添加的行,以- 开头的行是您删除的行。浏览一些文件的一些差异,他们就会掌握它并且应该能够自己读取文件的其余部分。

    【讨论】:

    • 这个答案似乎有效。它产生的输出大小与另一个似乎有效的答案非常相似。感谢您提供准确的输入命令!虽然我想投票并接受这两个答案,但我会接受另一个答案,因为它是最先发布的。但是,如果有人正在阅读本文,我希望他们对这两个答案都投赞成票,假设我们没有忽略任何事情。
    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2014-07-24
    • 2013-01-15
    • 2018-05-31
    • 2017-06-20
    相关资源
    最近更新 更多