代码之家  ›  专栏  ›  技术社区  ›  srajappa

与以前的标记相比,在当前git标记中查找新文件

  •  0
  • srajappa  · 技术社区  · 6 年前

    例如,我在tag中有以下文件: v1.0.1

    a
    b
    c
    

    对于标签: v1.0.2 文件如下:

    a
    b
    c
    d
    e
    

    现在,我们如何获得repo中最新标签的新文件列表?

    上述示例的答案应为:

    d
    e
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   torek    6 年前

    标记标识提交。提交包含一组文件的快照。

    git diff 比较文件集,包括两个不同的快照。简单点 差异比较 在两个特定的任务中,两个快照将为您提供将一个快照转换为另一个快照的说明:

    git diff v1.0.1 v1.0.2
    

    唯一的问题是 差异比较 向您显示 完整的说明 默认情况下,当您想知道 哪些文件受到影响 . 幸运地 差异比较 有旋钮,您可以转动旋钮使其减少或更改输出,例如 --name-status :

    $ git diff --name-status v1.0.1 v1.0.2
    M       Makefile
    M       debian/changelog
    M       quote.c
    M       server-info.c
    

    前面的“状态”字母告诉您Git认为该文件发生了什么: M 表示“已修改”,“D”表示“已删除”,依此类推。对于您的特定案例,最有趣的是 A ,表示“已添加”:文件在第二次提交中,但不在第一次提交中。

    因此,您希望从此列表中选择状态为 A. (在我的例子中,没有人会这样做,但在你的例子中,有人会这样做)。幸运地 差异比较 还有一个旋钮:

    git diff --diff-filter=A <options> <arguments>
    

    你可以保留 --名称状态 这样就不会显示 目录 但这仍然会显示字母 A. ; 所以你会想要 --name-only 要打印 只是 姓名:

    git diff --name-only --diff-filter=A v1.0.1 v1.0.2
    

    你就完了。