Cmder:如何在另一个别名中使用一个别名?

Ben*_*enj 6 alias cmder

我会在 Cmder 中的另一个别名中使用一个别名。

我对一个大命令有一个很好的别名(第一个),我会在另一个命令(第二个)中使用它:

mergelocdist=git fetch origin --prune --verbose && git checkout $1 && git merge --ff-only --verbose origin/$2 || git rebase --preserve-merges --verbose origin/$2

mm=mergelocdist master master
Run Code Online (Sandbox Code Playgroud)

别名位于 Cmderaliases文件中,我使用的是 Windows 7 x64。

该话题已经在这个问题中提出过,目前还没有回复。

如果你回答我,请也回答这个人:)

发现这个,似乎有帮助,但我不知道如何。

Mic*_*eck 1

Benj:我怀疑你现在已经找到答案了,但我发现没有人回答这个问题,所以我会回答。

如果我可以对别名文件提出替代建议。看起来你正在尝试为 git 解决这个问题。

我发现在 Windows 中执行此操作的最佳方法是编辑该~/.bashrc文件。在大多数 Windows 机器上,它位于C:\Users\<USERNAME>\.bashrc.

您可以创建一个函数,例如:

function MergeLocDistFn {
    local co_branch=$1
    local merge_branch=$2

    echo ">> Debug Command: git checkout ${co_branch}"
    git checkout ${co_branch}

    echo ">> Debug Command: git merge --ff-only --verbose origin/${merge_branch} || git rebase --preserve-merges --verbose origin/${merge_branch}"
    git merge --ff-only --verbose origin/${merge_branch} || git rebase --preserve-merges --verbose origin/${merge_branch}
}
Run Code Online (Sandbox Code Playgroud)

然后您可以在文件中创建别名~/.bashrc,如下所示:

alias mergelocdist=MergeLocDistFn
alias mm='MergeLocDistFn master master'
Run Code Online (Sandbox Code Playgroud)

这种方法的优点是,它可以让您真正复杂地使用该函数,正如我在这里展示的那样,还可以使用 echo 语句对其进行调试。

请参阅示例输出的附图。 bashrc 的输出示例

另请注意,如果您希望在 PowerShell 提示符下执行此操作,则修改 PowerShell 配置文件会更容易,只需告诉我,我将向您展示如何操作。

另请注意,您还可以在 .bashrc 中为当前分支创建一个函数。这是一个示例函数:

function current_branch() {
  ref=$(git symbolic-ref HEAD 2> /dev/null) || \
  ref=$(git rev-parse --short HEAD 2> /dev/null) || return
  echo ${ref#refs/heads/}
}
Run Code Online (Sandbox Code Playgroud)

这是使用 current_branch 函数的示例:

alias gpush='git push -u origin $(current_branch)'
Run Code Online (Sandbox Code Playgroud)

我希望他能有所帮助,如果您需要对此进行任何澄清,请告诉我。