Configure git to use IPv4 instead of IPv6 by default
git, ipv4, ipv6
Solution
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)
With Git 2.29 (Q4 2020), "`git fetch --all --ipv4/--ipv6`(man)" forgot to pass the protocol options to instances of the "git fetch" that talk to individual remotes, which has been corrected.
See commit 4e735c1 (15 Sep 2020) by Alex Riesen (`ar-cetitec`). (Merged by Junio C Hamano -- `gitster` -- in commit 6854689, 22 Sep 2020)
`fetch`: pass `--ipv4` and `--ipv6` options to sub-fetches
Signed-off-by: Alex Riesen
The options indicate user intent for the whole fetch operation, and ignoring them in sub-fetches (i.e. "`--all`" and recursive fetching of submodules) is quite unexpected when, for instance, it is intended to limit all of the communication to a specific transport protocol for some reason.
With Git 2.42 (Q3 2023), the invalid options `--no-ipv4` ou `--no-ipv6` are rejected early.
See commit a2dad48, commit ae2c912 (18 Jul 2023) by Junio C Hamano (`gitster`). (Merged by Junio C Hamano -- `gitster` -- in commit 9562f19, 27 Jul 2023)
`fetch`: reject `--no-ipv[46]`
Now we have introduced `OPT_IPVERSION()`, tweak its implementation so that "`git clone`"(man), "`git fetch`"(man), and "`git push`"(man) reject the negated form of Use only IP version N options.
You will therefore see "unknown option" if you are using `--no-ipv[46]`.
Problem
Checking the environment variables and also HTTP configuration options does not reveal something. Is there a way to do this?