如果我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
旗帜我刷过来会为我做这件事。
答案 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个,则显示最后一个文件)。