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

91
如果我使用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命令将会很好。是否有办法通过环境变量或配置设置来启用它?

希望我能让git使用-vvv参数运行该ssh命令。是否可以通过环境变量或配置设置来实现?

2个回答

132

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

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

你还可以通过传递-vvv来获得更详细的输出:

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

(如在这里所示)

请注意,您还可以使用其他git命令运行此操作,例如git pushgit fetch等。

从Git版本2.10.0开始,您甚至可以对每个存储库或全局进行配置:

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

对于旧版本的git(1.8或更早版本),我在这里发布了一份教程:https://dev59.com/am025IYBdhLWcg3wKSiP#57517262 - qneill

48

将以下内容添加到您的~/.ssh/config文件中:

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

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


7
如果您正在尝试调试使用哪个SSH密钥的问题,这并没有帮助。最好使用@Flimm的答案(例如:GIT_SSH_COMMAND="ssh -v" git ...)。 - chrish

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