0

明白啦:

git diff $(git status -s | awk 'FNR == $LINE_NUM {print $2}')

...其中行号是按状态输出的文件。

现在我想为这个命令创建一个别名.gitconfig

[alias]
diff-num = $WHAT_SHOULD_I_PUT_HERE?

我希望这个别名根据我将在命令行中输入的行号参数运行 git 的 diff 命令。我是 bash 新手,我不确定是否需要一个 bash 函数来处理这个问题,或者如何将参数传递给替换的命令。

4

2 回答 2

2

通常的形式是使用传统的!shell 转义,定义一个任意命名的 shell 函数并运行它,git 为它提供你的 args。我的 goto 之一是lgdo

git config alias.lgdo '!f() { git log --graph --decorate --oneline "${@---all}"; }; f'

另外,我有grgrl作为git config --get-regexp {,--local}别名:

[alias]
        grl = "!f() { git config --local --get-regexp \"${@-.}\"; }; f"
        gr = "!f() { git config --get-regexp \"${@-.}\"; }; f"
于 2019-03-30T17:05:15.227 回答
1

好的,搞定了。Git 别名如下所示:

diff-num = ! diff_num

Bash 函数是这样的:

diff_num () {
    line=${1:-1}
    git diff $(git status -s | awk 'FNR == '$line' {print $2}')
}

必须在 bash 配置文件中使用以下 bash 命令导出函数:

export -f diff_num

于 2019-03-30T16:47:36.367 回答