【问题标题】:Git pull change logGit拉取更改日志
【发布时间】:2016-12-24 22:40:28
【问题描述】:

从 git 服务器中提取后,我试图获取所有已更改文件的列表。我不需要任何特定的代码部分,只需要一个文件列表(带有某种关于它是否被添加、删除或更改的指示)。

我第一次看到使用 git log,但这似乎只返回上次提交的信息:

git log --name-status --max-count=1 --pretty=format:""

由于这似乎只从拉取的最后一次提交中获取更改,因此我正在尝试找到一种方法来获取所有更改(拉取几乎总是存在于多个提交中)。

这有什么命令吗? (我正在通过 PHP 与 Git 交互,顺便说一句)

【问题讨论】:

    标签: git logging commit pull


    【解决方案1】:

    拉动后,ORIG_HEAD 指的是您之前所在的位置,HEAD 指的是您现在所在的位置。所以ORIG_HEAD.. 表示将更改拉入当前分支。 --max-count=1 表示只是最后一次提交,而不是你想要的,正如你发现的那样。

    您可能想要git diff --name-status ORIG_HEAD.. 之类的东西,它将为每个更改的文件输出一个单字符状态代码和一个文件名,将所有提交聚合在一起。如果您希望每次更改都对其进行分解,则需要git log --oneline --name-status ORIG_HEAD..

    【讨论】:

    • git diff --name-status ORIG_HEAD.. 工作就像一个魅力,不能说谢谢!
    • alias gpull='git pull; git diff --name-status ORIG_HEAD..' 正是我想要的,将其添加到我的 .bashrc 中
    • 如果您的远程跟踪分支跟踪不同的分支,这将无法正常工作。例如,如果我有我的分支topic 跟踪origin/master。拉动会将topic 重新设置为origin/master。要查看仅在上游分支上引入的 delta,您可以运行 git lg @{1}..@{u}@{1} 使用 reflogs,与 ORIG_HEAD 相同。 @{u} 是你的上游分支(远程跟踪分支)
    【解决方案2】:

    另一个命令是:

    git pull --stat 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2013-02-01
      • 1970-01-01
      相关资源
      最近更新 更多