web-dev-qa-db-ja.com

デフォルトでIPv6ではなくIPv4を使用するようにgitを構成する

環境変数とHTTP構成オプションをチェックしても、何かは明らかになりません。これを行う方法はありますか?

30
nobeh

Git 2.8(2016年3月)では、git fetch/Push/cloneはIPV4またはIPV6を使用します。
(ために git pull、下記のGit 2.16、2018年第1四半期を参照)

commit c915f11 (2016年2月3日) Eric Wong(ele828
Junio C Hamano-gitster- によってマージ commit e84d5e9 、2016年2月24日)

connecthttp:サポート-4および-6リモート操作用のスイッチ

名前の検索でルーティング不可能なアドレスが返され、リモート操作が停止する可能性があるネットワークでは、IPv4のみまたはIPv6のみの操作を強制する必要がある場合があります。

-4, --ipv4:

IPv6アドレスを無視して、IPv4アドレスのみを使用します。

-6; --ipv6:

IPv4アドレスを無視して、IPv6アドレスのみを使用します。


Git 2.16(2018年第1四半期)の更新:ドキュメントに反して、「git pull -4/-6 other-args "は、基になる" git fetch "はIPv4/IPv6を通過するように修正されました。

Shuyu Wei( ``) による commit ffb4568 (2017年11月19日)を参照してください。
Junio C Hamano-gitster- によってマージ commit c2b6135 、2017年11月27日)

24
VonC

より一般的な解決策(BSDでも機能します)は、グローバル/etc/ssh/ssh_configまたはユーザーごと~/.ssh/configとエントリを追加/置換:

AddressFamily any 

AddressFamily inet

これを単一のホストにのみ設定することもできます。

Host example.com
    AddressFamily inet
24
Anthony C Howe

99%のケースでは、これを行うべきではありません。質問に対する本当の答えはIPv6接続を修正するです。

それができない場合は、_/etc/gai.conf_を編集して、IPv6よりもIPv4を優先することができます。 gai.confはgetaddrinfo()の動作を変更します。これは、ほとんどすべてのIPv6対応アプリケーションがホスト名を解決するために使用します。

ほとんどすべてのシステムには、glibcまたはlibcパッケージ内の/etc/gai.confのコピーが同梱されています。/etcにない場合、通常、/ usr/share/doc内のどこかにテンプレートのコピーが潜んでいることがわかります。これは、/ etcにコピーして変更するためです。

12
Jeremy Visser

アップグレードgitまたはIPV6が実行されているが期待どおりに機能しない状況があります。たとえば、Windows Linuxサブシステムでは、私のソリューションは単純です。/etc/hostsにgit/httpb/ssh IPV4の場所を追加するだけです。

Hostを使用してIPV4アドレスを取得し、それを/ etc/hostsに独自の名前で追加します。たとえば、1.1.1.1 git4.server.com

1
fcm

Ubuntu/Debianを使用している場合、最新のgitバージョンを入手するための最良の方法は、 here から以下の手順に従ってください。

Sudo add-apt-repository ppa:git-core/ppa  
Sudo apt-get update  
Sudo apt-get install git  

Anthony C Howeによって提案されたバージョン2.19+と上記のソリューションに更新すると、問題が解決しました。

0
Rodrigo Estevao