これがgit:プロトコルポート(9418)をブロックするファイアウォールの問題である場合は、より永続的な変更を行う必要があります。これにより、すべてのgitリポジトリに対して他の投稿で提案されているコマンドを発行する必要がないようにする必要があります。
以下の解決策は、git:プロトコルを使用している可能性のあるサブモジュールでも機能します。
gitメッセージは実際にはファイアウォールのブロックポート9418を直接指していないため、これを実際の問題として診断してみましょう。
問題の診断
参考文献:https://superuser.com/q/621870/203918とhttps://unix.stackexchange.com/q/11756/57414
ファイアウォールが問題の原因であるかどうかを判断するために使用できるツールがいくつかあります。システムにインストールされているものを使用してください。
# Using nmap
# A state of "filtered" against port 9418 (git) means
# that traffic is being filtered by a firewall
$ nmap github.com -p http,git
Starting Nmap 5.21 ( http://nmap.org ) at 2015-01-21 10:55 ACDT
Nmap scan report for github.com (192.30.252.131)
Host is up (0.24s latency).
PORT STATE SERVICE
80/tcp open http
9418/tcp filtered git
# Using Netcat:
# Returns 0 if the git protocol port IS NOT blocked
# Returns 1 if the git protocol port IS blocked
$ nc github.com 9418 < /dev/null; echo $?
1
# Using CURL
# Returns an exit code of (7) if the git protocol port IS blocked
# Returns no output if the git protocol port IS NOT blocked
$ curl http://github.com:9418
curl: (7) couldn't connect to host
それでは、ファイアウォールでgitポートがブロックされていると判断したので、どうすればよいですか?読む :)
基本的なURL書き換え
Gitはを使用してURLを書き換える方法を提供しますgit config
。次のコマンドを発行するだけです。
git config --global url."https://".insteadOf git://
今、まるで魔法のように、すべてのgitコマンドはgit://
toの置換を実行しますhttps://
このコマンドによって何が変更されましたか?
以下を使用して、グローバル構成を確認します。
git config --list
出力に次の行が表示されます。
url.https://.insteadof=git://
~/.gitconfig
次の2行が追加されたことを確認できるはずの場所をのぞくと、これがファイルでどのように見えるかを確認できます。
[url "https://"]
insteadOf = git://
より細かく制御したいですか?
代わりに、より完全で特定のURLを使用してください。たとえば、GitHubのURLでのみgit://ではなくhttps://を使用するには、次のようにします。
git config --global url."https://github".insteadOf git://github
異なる置換を使用して、このコマンドを複数回実行できます。ただし、URLが複数の置換に一致する場合、最長一致が「勝ち」ます。URLごとに1つの置換のみが行われます。
システム管理者向けのシステム全体の変更
あなたがLinuxシステム管理者であり、ユーザーに上記の苦労を強いられることを望まない場合は、システム全体のgit設定をすばやく変更できます。
次のコンテンツを編集または追加するだけで/etc/gitconfig
、ユーザーは上記のいずれも心配する必要はありません。
[url "https://"]
insteadOf = git://