3

我可以让 bash 假设命令始终是 git 命令吗?

我是说:

如果我写了push origin master它会执行git push origin master吗?

注意:我会在 git bash(Windows 环境)中使用它,所以我不需要常规命令(ls、cd 等)来工作。

4

4 回答 4

2

您可以为常用命令添加别名,例如push将成为git push等。此解决方案需要指定您正在使用的所有命令,但不应破坏任何内容。

于 2012-12-03T15:37:01.533 回答
2

你可能想试试这个小的 git shell,而不是:

gitsh () {
    while read -r -p "gitsh> " -a GITCOMMAND; do
        git "${GITCOMMAND[@]}"
    done
}

定义该函数后,运行一次,它将处于无限循环中,读取命令行并将其作为选项传递给git命令。

编辑:按照 gniourf_gniourf 的建议,将-e选项添加到read命令中,为您提供了一个不错的基于 Readline 的环境,您可以在其中检索和编辑历史记录。

于 2012-12-03T16:28:13.117 回答
1

假设“git bash”就像普通的 bash,使用command_not_found_handle函数:

function command_not_found_handle {
  command git "$0" "$@"
}

http://www.gnu.org/software/bash/manual/bashref.html#Command-Search-and-Execution

存在发送 git 无意命令的可能性,但这就是您在问题中所要求的。

于 2012-12-03T17:49:20.083 回答
0

您可以将名为 push、commit 等的脚本添加到您的 PATH 中。这样,您的外壳将具有推送、提交等“命令”。这应该适用于您使用的任何 shell,而不仅仅是 bash。

于 2012-12-03T15:37:07.640 回答