Configure git to use IPv4 instead of IPv6 by defau

2019-02-04 04:33发布

问题:

Checking the environment variables and also HTTP configuration options does not reveal something. Is there a way to do this?

回答1:

With git 2.8 (March 2016), you can force git fetch/push/clone to use IPV4 or IPV6.
(for git pull, see below Git 2.16, Q1 2018)

See commit c915f11 (03 Feb 2016) by Eric Wong (ele828).
(Merged by Junio C Hamano -- gitster -- in commit e84d5e9, 24 Feb 2016)

connect & http: support -4 and -6 switches for remote operations

Sometimes it is necessary to force IPv4-only or IPv6-only operation on networks where name lookups may return a non-routable address and stall remote operations.

-4, --ipv4:

Use IPv4 addresses only, ignoring IPv6 addresses.

-6; --ipv6:

Use IPv6 addresses only, ignoring IPv4 addresses.


Update Git 2.16 (Q1 2018): Contrary to the documentation, "git pull -4/-6 other-args" did not ask the underlying "git fetch" to go over IPv4/IPv6, which has been corrected.

See commit ffb4568 (19 Nov 2017) by Shuyu Wei (``).
(Merged by Junio C Hamano -- gitster -- in commit c2b6135, 27 Nov 2017)



回答2:

The more generic solution (that also works for BSD) is to edit the global /etc/ssh/ssh_config or per-user ~/.ssh/config and add/replace the entry:

AddressFamily any 

with

AddressFamily inet

You can also set this for just a single host:

Host example.com
    AddressFamily inet


回答3:

In 99% of cases, you should not be doing this. The real answer to the question is fix your IPv6 connection.

Failing that, you can edit /etc/gai.conf to prefer IPv4 over IPv6. gai.conf modifies the behaviour of getaddrinfo(), which almost all IPv6–supporting applications use to resolve hostnames.

Almost all systems ship with a copy of /etc/gai.conf within their glibc or libc package. If it is missing from /etc, usually I find a template copy is lurking somewhere within /usr/share/doc, for you to copy into /etc and modify accordingly.



回答4:

There are situations where upgrade git or where IPV6 is running but not working as expected, for example, under Windows Linux subsystem, my solutions is simple: just add the git/httpb/ssh IPV4 location on /etc/hosts.

Use host to get the IPV4 address and append it to /etc/hosts with name for your own use, for example, 1.1.1.1 git4.server.com



标签: git ipv6 ipv4