哪些默认命令适用于 git-shell?
Which default commands work in git-shell?
我使用 PuTTy 使用密码登录 git-shell。无论我在 git-shell(Debian linux 服务器上的受限登录 shell)中输入什么,都会得到类似 "unrecognized command" 的响应。
git> git help -a
unrecognized command 'git'
git-shell
在设计上非常有限。有关详细信息,请参阅 man page。
默认情况下,它只能 运行 几个命令,以允许 push/pull 操作。这是 git 服务器提供 "safe" SSH 访问的一种方式,仅限于与 git 存储库交互。同样默认情况下,没有交互式登录访问权限。
请注意,只需使用 git-shell 执行 push/pull/fetch 操作,您无需执行任何特殊操作。它已经可以做那些事情了。如果你想做一些不寻常的事情,你只需要定义自定义命令。
您在评论中说您有一个 ~/git-shell-commands/
目录,但它是空的。该目录的存在将启用交互模式,因此您会收到 git>
提示。然而,命令目录是空的意味着没有有效的命令可以运行。在这种情况下,您唯一可以 运行 的是 exit
离开 shell.
要使用 git-shell
,您需要在 ~/git-shell-commands
中创建一些命令。具体要创建什么取决于您。一个示例可能是创建 list
,并让该脚本 return 服务器上可用存储库的列表。
如果您想像评论中指出的那样使用 "standard commands,",那么我认为答案是 git-shell
不是您要找的工具。听起来您正在寻找常规登录 shell.
自定义命令示例可能如下所示。这是我上面建议的 list
命令的实现。
#!/bin/bash
# Assuming all repositories are named `*.git`
for repo in $(ls -d *.git); do
# Just in case one exists, ignore ".git"
if [[ "$repo" != ".git" ]];
# Trim off the extension
echo $(basename $repo .git)
fi
done
this blog post 中有几个示例。
我使用 PuTTy 使用密码登录 git-shell。无论我在 git-shell(Debian linux 服务器上的受限登录 shell)中输入什么,都会得到类似 "unrecognized command" 的响应。
git> git help -a
unrecognized command 'git'
git-shell
在设计上非常有限。有关详细信息,请参阅 man page。
默认情况下,它只能 运行 几个命令,以允许 push/pull 操作。这是 git 服务器提供 "safe" SSH 访问的一种方式,仅限于与 git 存储库交互。同样默认情况下,没有交互式登录访问权限。
请注意,只需使用 git-shell 执行 push/pull/fetch 操作,您无需执行任何特殊操作。它已经可以做那些事情了。如果你想做一些不寻常的事情,你只需要定义自定义命令。
您在评论中说您有一个 ~/git-shell-commands/
目录,但它是空的。该目录的存在将启用交互模式,因此您会收到 git>
提示。然而,命令目录是空的意味着没有有效的命令可以运行。在这种情况下,您唯一可以 运行 的是 exit
离开 shell.
要使用 git-shell
,您需要在 ~/git-shell-commands
中创建一些命令。具体要创建什么取决于您。一个示例可能是创建 list
,并让该脚本 return 服务器上可用存储库的列表。
如果您想像评论中指出的那样使用 "standard commands,",那么我认为答案是 git-shell
不是您要找的工具。听起来您正在寻找常规登录 shell.
自定义命令示例可能如下所示。这是我上面建议的 list
命令的实现。
#!/bin/bash
# Assuming all repositories are named `*.git`
for repo in $(ls -d *.git); do
# Just in case one exists, ignore ".git"
if [[ "$repo" != ".git" ]];
# Trim off the extension
echo $(basename $repo .git)
fi
done
this blog post 中有几个示例。