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

6

我想在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

别名存储在Cmder的“aliases”文件中,我使用的是Windows 7 x64操作系统。
这个问题已经在这个问题中提出,但目前还没有回复。
如果你回答我的问题,请也回答这位用户的问题 :)
找到了这篇文章,似乎有一些帮助,但我不知道怎么做。
1个回答

1

Benj: 我猜你现在已经找到了答案,但是我看到没有人回答这个问题,所以我来回答一下。

如果我可以提供一个替代aliases文件的建议。看起来你正在尝试为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}
}

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

alias mergelocdist=MergeLocDistFn
alias mm='MergeLocDistFn master master'

这种方法的优点在于它使您可以对函数进行高级处理,正如我在这里展示的那样,还可以通过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/}
}

这是使用current_branch函数的示例:
alias gpush='git push -u origin $(current_branch)'

我希望这可以帮到您,如果您对此需要任何澄清,请告诉我。

谢谢帮忙!目前我还没有找到任何解决方案,所以再次感谢!如果可以的话,我会亲吻你的。 - Benj
第一次回答很棒。我在我的问题评论中放了你的答案链接。 - Benj
很高兴听到它有帮助。如果你想进一步探索,我也在http://erpenbeck.io/2016/10/27/bashrc/上写了其他bashrc技巧的博客。例如,如果你的团队使用Git upstream remotes、develop/master branches等,有一个方便的方法叫做cloneIt,可以通过一个命令来配置所有内容。根据你的团队Git约定进行自定义。 - Michael Erpenbeck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接