git diff只是第一个文件(所有未分级的更改)

时间:2016-11-21 23:27:54

标签: git bash

如果我git diff,我将获取所有未暂存文件的当前更改。

是否有一种更简单的方法可以在第一个列出的文件上自动执行git diff(使用内置标志)?

我提出的最好的是:

function git_diff_first_unstaged_file() {
    if [[ $(git diff --name-only) ]]; then
      git diff $(git diff --name-only | sed -n '1 p')
    else
      echo "gdf: There are currently no unstaged changes."
    fi
}
alias gdf='git_diff_first_unstaged_file'

我想知道是否有一个git diff旗帜我刷过来会为我做这件事。

2 个答案:

答案 0 :(得分:1)

除了git diff --name-only之外,你还有git ls-files --modified可以列出未分段文件(与| sed -1p一起使用以获得第一个文件)。

不要忘记,如果您想为第一个文件启动staging diff,您可以选择只输入:

git add -p

您将看到并将能够有选择地为第一个文件添加差异(然后是第二个文件,此时您可以键入 q 以退出交互式分段会话)

答案 1 :(得分:1)

根据评论中的建议,可以将以下别名添加到~/.gitconfig(项目配置),以便仅使用第一个未分期跟踪来制作差异档案:

[alias]
    gdf = "! git diff $(git diff --name-only | sed -n 1p)"

如果您想使用第i个未分期跟踪文件进行差异化处理:

[alias]
    gdi= "!f() { git diff $(git diff --name-only | sed -n $1p); }; f" 

git gdi 3将显示第三个文件的非分段更改的差异(如果文件少于3个,则显示最后一个文件)。