`git :`url을`http :`url로 변환하는 방법 할 수 없습니다. git항상 사용

http 프록시 뒤에서 일하고 있습니다. “리포”도구를 사용하여 Android 소스 트리를 복제하려고합니다.

이 도구는 URL이 작동 git://하더라도 http://URL 사용을 주장 합니다. 결과적으로 소스를 다운로드 할 수 없습니다.

git항상 사용 하도록 강요 할 수 http있습니까?

편집 : 내 http_proxy가 올바르게 구성되었습니다. 예를 들어, 다음과 같이 작동합니다.

git clone http://android.git.kernel.org/platform/manifest.git

그러나 이것은 그렇지 않습니다 (errno = 연결 시간이 초과되었습니다).

git clone git://android.git.kernel.org/platform/manifest.git

따라서이 답변 은 실제로 도움 되지 않습니다.



답변

다음은 GitHub의 기본 프로토콜을 다시 작성하는 예입니다.

git config --global url.https://github.com/.insteadOf git://github.com/

Git 문서 url.<base>.insteadOf:

git config [--global] url.<base>.insteadOf <other_url>

이 값으로 시작하는 URL은 대신로 시작되도록 다시 작성됩니다 <base>. 지정된 URL과 일치하는 문자열이 둘 이상인 경우 가장 긴 일치가 사용됩니다.


답변

repo 도구가 Git을 사용 하는 방법을 모르고 (http 프로토콜을 사용하도록 ‘repo’를 구성 할 수있는 경우) url.<base>.insteadOf구성 변수를 사용하여 트릭을 시도 할 수 있습니다 ( git-configgit-fetch 참조) 맨 페이지 참조).

core.gitProxy방화벽 프로토콜을 사용하는 데 문제가 있다면 방화벽을 통과하는 데 사용하려고 했습니까 ?


답변

자식 저장소에서 하위 모듈을 재귀 적으로 가져 오는 것과 동일한 문제가있었습니다. git 포트에서 나가는 연결을 허용하지 않는 미친 방화벽 뒤에 있습니다. 하위 모듈의 일부 하위 모듈은로 코딩되었습니다 git://github.com/blah/blah.git. 이로 인해 내 재귀 하위 모듈이 죽었습니다. 해결 방법은 다음과 같습니다.

git config --global url."https://<GITUSERNAME>@".insteadOf git://

이을 대체 git://https://<GITUSERNAME>@모든 서브 모듈 저장소 URL을한다. <GITUSERNAME>자신의 자식 사용자 이름 으로 바꿔야 합니다. 또한 --global필수입니다; 이 구성을 기본 리포지토리 디렉토리에 추가하면 작동하지 않습니다.


답변

~/.gitconfighttps : //로 SSH를 덮어 쓰는지 여부를 확인할 수 있으며 그 반대도 마찬가지입니다.