如何使用 SSH 详细模式运行 git push/pull 命令?

如果我使用 gIT _ TRACE = 2环境变量运行“ GIT push”,我会得到以下结果:

09:25:28.098743 git.c:349               trace: built-in: git 'push' 'origin' 'master'
09:25:28.100261 run-command.c:341       trace: run_command: 'ssh' 'git@bitbucket.org' 'git-receive-pack '\''kevinburke/letter.git'\'''

这很好,除了有时我会得到这个错误:

fatal: Could not read from remote repository.

我只是间歇性地得到它,所以我不确定发生了什么。我知道 ssh 有一个冗长的模式:

 -v      Verbose mode. Causes ssh to print debugging messages about its progress.
This is helpful in debugging connection, authentication, and configuration
problems.  Multiple -v options increase the verbosity.  The maximum is 3.

如果我能让 git在打开 -vvv的情况下运行 ssh 命令,那就太好了。是否有方法通过环境变量或配置设置来启用此功能?

46862 次浏览

把它放到 ~/. ssh/config 文件中:

Host <git-server-FQDN> LogLevel (QUIET|FATAL|ERROR|INFO|VERBOSE|DEBUG|DEBUG1|DEBUG2|DEBUG3)

随后与服务器交互的 git 命令应该产生所需的调试输出。

从 Git 2.3.0版本开始,你可以使用环境变量 GIT_SSH_COMMAND并像下面这样传递详细的参数:

GIT_SSH_COMMAND="ssh -v" git clone <REPO_SSH>

您还可以通过 -vvv获得更详细的级别:

GIT_SSH_COMMAND="ssh -vvv" git clone <REPO_SSH>

(如图所示 https://askubuntu.com/a/620985/975188)

请注意,您也可以运行与其他 git命令,如 git pushgit fetch等。

在 Git 2.10.0版本中,您甚至可以为每个回购或全局配置:

git config core.sshCommand "ssh -v"
git pull
git push