为了账号安全,请及时绑定邮箱和手机立即绑定

如何调试git / git-shell相关问题?

如何调试git / git-shell相关问题?

Git
繁星点点滴滴 2019-08-30 16:42:36
我如何获得有关git / git-shell的一些调试信息?我有一个问题,user1可以克隆存储库没有问题,而user2只能克隆一个空的。我设定了GIT_TRACE=1,但没有任何有用的东西被告知。最后,经过长时间的反复试验,结果证明这是文件的权限问题。适当的错误消息可能会使此问题短路。
查看完整描述

3 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

对于更详细的输出使用如下:


GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master



查看完整回答
反对 回复 2019-08-30
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

调试

Git有一套相当完整的跟踪嵌入,您可以使用它来调试您的git问题。


要打开它们,您可以定义以下变量:


GIT_TRACE 一般的痕迹,

GIT_TRACE_PACK_ACCESS 用于跟踪packfile访问,

GIT_TRACE_PACKET 用于网络操作的数据包级跟踪,

GIT_TRACE_PERFORMANCE 用于记录性能数据,

GIT_TRACE_SETUP 有关发现与其交互的存储库和环境的信息,

GIT_MERGE_VERBOSITY 用于调试递归合并策略(值:0-5),

GIT_CURL_VERBOSE用于记录所有curl消息(相当于curl -v),

GIT_TRACE_SHALLOW 用于调试浅层存储库的获取/克隆。

可能的值包括:


true,1或2写信给标准错误,

从/跟踪输出到指定文件开始的绝对路径。


SSH

对于SSH问题,请尝试以下命令:


echo 'ssh -vvv "$*"' > ssh && chmod +x ssh

GIT_SSH="$PWD/ssh" git pull origin master

或用于ssh验证您的凭据,例如


ssh -vvvT git@github.com

或通过HTTPS端口:


ssh -vvvT -p 443 git@ssh.github.com

注意:减少数量-v以减少详细程度。


例子

$ GIT_TRACE=1 git status

20:11:39.565701 git.c:350               trace: built-in: git 'status'


$ GIT_TRACE_PERFORMANCE=$PWD/gc.log git gc

Counting objects: 143760, done.

...

$ head gc.log 

20:12:37.214410 trace.c:420             performance: 0.090286000 s: git command: 'git' 'pack-refs' '--all' '--prune'

20:12:37.378101 trace.c:420             performance: 0.156971000 s: git command: 'git' 'reflog' 'expire' '--all'

...


$ GIT_TRACE_PACKET=true git pull origin master

20:16:53.062183 pkt-line.c:80           packet:        fetch< 93eb028c6b2f8b1d694d1173a4ddf32b48e371ce HEAD\0multi_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master agent=git/2:2.6.5~update-ref-initial-update-1494-g76b680d

...



查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 638 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信