代码之家  ›  专栏  ›  技术社区  ›  Julio Vedovatto

在第一次和最后一次提交之间在同一文件中使用git diff

  •  5
  • Julio Vedovatto  · 技术社区  · 16 年前

    我有一个文本文件(.yml),可以输入一些文本供系统使用。但现在我们需要马上知道新的生产线。我想用git来解决我们的问题,但我找不到一个明确的命令来做这件事。

    这可能吗?

    2 回复  |  直到 16 年前
        1
  •  11
  •   Marco Ceppi    16 年前

    您可以通过以下方式获得提交列表:

    git log --abbrev-commit --pretty=oneline

    应该是这样的:

    commitD Description
    commitC Description
    commitB Description
    commitA Description
    

    选择两个提交,并在下面替换它们:

    git diff <commitA>..<commitB> -- /path/to/file

        2
  •  3
  •   OderWat    15 年前

    只需一条命令行即可:

    git diff -w `git rev-list HEAD --reverse | head -1`..HEAD -- <path/file>
    

    使用--reverse时计数为1(-1/--max count 1)。。。因为它会在截断后反转结果列表。所以要么使用--reverse和head命令一起使用,要么使用tail-1。

    我不得不在我的用法中添加-w,因为在行尾和制表符与空格的用法中存在切换。

    如果在第一次提交时没有添加该文件,这可能无法按预期工作!您可以将上述行更改为:

    git diff -w `git rev-list HEAD --reverse -- <path/file> | head -1`..HEAD -- <path/file>