我有一个git
(版本2.1.2
)存储库,其中包含ssh
个遥控器:
$ git remote -v
origin ssh://dettorer@dettorer.net:/home/dettorer/my_project (fetch)
origin ssh://dettorer@dettorer.net:/home/dettorer/my_project (push)
未能推动:
$ git push
Bad port ''
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
除非......我使用--verbose
开关:
$ git push --verbose
Pushing to ssh://dettorer@dettorer.net:/home/dettorer/my_project
Enter passphrase for key '/home/dettorer/.ssh/id_rsa':
Counting objects: 7, done.
...
To ssh://dettorer@dettorer.net:/home/dettorer/my_project
e633fe9..5d2e9de master -> master
updating local tracking ref 'refs/remotes/origin/master'
我将ssh
日志级别增加为提示in that answer,但git push
(不包含--verbose
)的输出完全相同。
它可能来自哪里?
正如nwinkler建议的那样,这是两个带GIT_TRACE=2
的命令的输出:
$ GIT_TRACE=2 git push
13:42:33.002392 git.c:349 trace: built-in: git 'push'
13:42:33.033594 run-command.c:341 trace: run_command: 'ssh' '-p' '' 'dettorer@dettorer.net' 'git-receive-pack '\''/home/dettorer/my_project'\'''
Bad port ''
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
$ GIT_TRACE=2 git push -v
13:42:39.929236 git.c:349 trace: built-in: git 'push' '-v'
Pushing to ssh://dettorer@dettorer.net:/home/dettorer/my_project
13:42:39.944837 run-command.c:341 trace: run_command: 'ssh' 'dettorer@dettorer.net' 'git-receive-pack '\''/home/dettorer/my_project'\'''
Enter passphrase for key '/home/dettorer/.ssh/id_rsa':
因此,除非我使用--verbose
,否则确实会有一个带有空参数的额外'-p'
选项。
编辑:这变得越来越模糊:
$ git push origin
Bad port ''
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
$ git remote add test test
$ git push origin
Enter passphrase for key '/home/dettorer/.ssh/id_rsa':
$ git remote remove test
$ git push origin
Bad port ''
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
答案 0 :(得分:8)
好的,看到你的评论后,我很确定我知道什么是错的。
您可以尝试将远程网址更改为:
ssh://dettorer@dettorer.net/home/dettorer/my_project
你那里有一个额外的冒号,这似乎导致了额外端口的问题。我不知道为什么用-v
运行它来修复问题。
git帮助显示以下是ssh
协议支持的格式:
ssh://[user@]host.xz[:port]/path/to/repo.git/
如您所见,只有在需要设置端口时才需要冒号。如果要使用标准端口,请将其关闭。
答案 1 :(得分:2)
注意:使用Git 2。3。7(2015年4月27日发布),此错误“Bad port ''
”已不复存在。
请参阅commit ad34ad6,commit 6b6c5f7(Torsten Bögershausen tboegi
)
后的额外冒号
connect.c
:忽略主机名忽略URL中主机名末尾的额外“
:
” “ssh://example.com:/path/to/repo
”冒号用于将端口号与主机名分开 如果端口为空,则应忽略冒号,请参阅RFC 3986。
它一直在使用
ssh://
方案的网址,但无意中 在86ceb3, "allowssh://user@[2001:db8::1]/repo.git
"中打破(Git 2.3.4)。