كيف يمكنني السحب من مستودع Git عبر وكيل HTTP؟
-
02-07-2019 - |
سؤال
ملحوظة:في حين أن حالة الاستخدام الموضحة تتعلق باستخدام الوحدات الفرعية داخل المشروع، فإن الأمر نفسه ينطبق على الوضع العادي git clone
من مستودع عبر HTTP.
لدي مشروع تحت سيطرة Git.أرغب في إضافة وحدة فرعية:
git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu
لكنني فهمت
...
got 1b0313f016d98e556396c91d08127c59722762d0
got 4c42d44a9221209293e5f3eb7e662a1571b09421
got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7
error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri...
Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a
while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658.
fatal: Fetch failed.
Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'
لقد قمت بإعداد HTTP_PROXY الخاص بي:
c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80
لدي أيضًا إعداد Git عالمي لوكيل http:
c:\project> git config --get http.proxy
http://proxy.mycompany:80
هل حصل أي شخص على عمليات جلب HTTP للعمل باستمرار من خلال وكيل؟الأمر الغريب حقًا هو أن بعض المشاريع على GitHub تعمل بشكل جيد (awesome_nested_set
على سبيل المثال)، ولكن الآخرين يفشلون باستمرار (القضبان على سبيل المثال).
المحلول 3
ما نجح أخيرًا هو ضبط http_proxy
متغيرات البيئة.لقد وضعت HTTP_PROXY
بشكل صحيح، ولكن يبدو أن git يحب الإصدار بالأحرف الصغيرة بشكل أفضل.
نصائح أخرى
يمكنك أيضًا تعيين وكيل HTTP الذي يستخدمه Git في خاصية التكوين العام http.proxy
:
git config --global http.proxy http://proxy.mycompany:80
للمصادقة مع الوكيل:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/
(الائتمان يذهب إلى @ يوجين كولابوهوف و @خايمي رينوسو لتنسيق المصادقة.)
هناك بعض الإجابات الرائعة على هذا بالفعل.ومع ذلك، اعتقدت أنني سأشارك لأن بعض الخوادم الوكيلة تتطلب منك المصادقة باستخدام معرف المستخدم وكلمة المرور.في بعض الأحيان يمكن أن يكون هذا على المجال.
لذلك، على سبيل المثال، إذا كان تكوين الخادم الوكيل الخاص بك كما يلي:
Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword
ثم أضف إلى حسابك .gitconfig
الملف باستخدام الأمر التالي:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080
لا تقلق بشأن https
.طالما أن الخادم الوكيل المحدد يدعم http وhttps، فسيكفي إدخال واحد في ملف التكوين.
يمكنك بعد ذلك التحقق من أن الأمر أضاف الإدخال إلى ملفك .gitconfig
الملف بنجاح عن طريق العمل cat .gitconfig
:
في نهاية الملف سوف ترى إدخال كما يلي:
[http]
proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080
هذا كل شيء!
يبدو أنك تستخدم مجموعة mingw من Git على نظام التشغيل Windows (أو ربما مجموعة أخرى لم أسمع عنها).هناك طرق لتصحيح هذا:أعتقد أن جميع أعمال وكيل http لـ git تتم عن طريق الضفيرة.قم بتعيين متغير البيئة هذا قبل تشغيل git:
GIT_CURL_VERBOSE=1
يجب أن يعطيك هذا على الأقل فكرة عما يحدث خلف الكواليس.
إذا كنت تريد فقط استخدام الوكيل في مستودع محدد، فلا تحتاج إلى مستودعات أخرى.الطريقة المفضلة هي -c, --config <key=value>
الخيار عندما git clone
مستودع.على سبيل المثال
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"
عندما يقوم فريق الشبكة لديك بفحص ssl عن طريق إعادة كتابة الشهادات، ثم استخدام عنوان url http بدلاً من عنوان https، بالإضافة إلى إعداد هذا var الذي يناسبني.
git config --global http.proxy http://proxy:8081
يمكنك ذلك أيضا تحرير ملف .gitconfig يقع في دليل %userprofile% على نظام Windows (المفكرة %userprofile%.gitconfig) أو في الدليل ~ على نظام Linux (السادس ~/.gitconfig) و إضافة قسم http على النحو التالي.
محتوى ملف .gitconfig :
[http]
proxy = http://proxy.mycompany:80
هذا سؤال قديم، ولكن إذا كنت تستخدم نظام التشغيل Windows، ففكر في تعيين HTTPS_PROXY أيضًا إذا كنت تقوم بالاسترداد عبر عنوان URL https.عملت بالنسبة لي!
بالنسبة لي، فإن git:// لا يعمل من خلال الوكيل على الرغم من أن https:// يعمل.تسبب هذا في بعض الصداع لأنني كنت أقوم بتشغيل البرامج النصية التي تستخدم جميعها git:// لذلك لم أتمكن من تغييرها جميعًا بسهولة.ومع ذلك وجدت هذه الجوهرة
git config --global url."https://github.com/".insteadOf git://github.com/
لا أجد أيا منهما http.proxy
ولا GIT_PROXY_COMMAND
العمل مع وكيل http المصادق عليه.لا يتم تشغيل الوكيل في كلتا الحالتين.لكنني أجد طريقة للتغلب على هذا.
- ثَبَّتَ المفتاح, أو البدائل الأخرى التي تريدها.
قم بإنشاء ملف تفويض.التنسيق ل
authfile
يكون:user_name:password
, ، وuser_name
,password
هو اسم المستخدم وكلمة المرور الخاصة بك للوصول إلى الوكيل الخاص بك.لإنشاء مثل هذا الملف، ما عليك سوى تشغيل أمر مثل هذا:echo "username:password" > ~/.ssh/authfile
.يحرر
~/.ssh/config
, ، والتأكد من إذنه644
:chmod 644 ~/.ssh/config
خذ github.com كمثال، وأضف الأسطر التالية إلى ~/.ssh/config
:
Host github.com
HostName github.com
ProxyCommand /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
User git
الآن كلما فعلت أي شيء مع git@github.com
, ، سيتم استخدام الوكيل تلقائيًا.يمكنك أن تفعل الشيء نفسه بسهولة بيتبوكيت أيضًا.
هذه ليست أنيقة مثل الأساليب الأخرى، ولكنها تعمل مثل السحر.
على نظام التشغيل Windows، إذا كنت لا ترغب في وضع كلمة المرور الخاصة بك في .gitconfig في النص العادي، فيمكنك استخدام
يقوم بمصادقتك ضد وكيل Windows NTLM العادي أو حتى ويبدأ تشغيل وكيل المضيف المحلي دون مصادقة.
من أجل تشغيله:
- قم بتثبيت Cntml
- قم بتكوين Cntml وفقًا للوثائق لتمرير مصادقة الوكيل الخاص بك
قم بتوجيه git إلى وكيل المضيف المحلي الجديد الخاص بك:
[http] proxy = http://localhost:3128 # change port as necessary
بالنسبة لي ما نجح كان:
sudo apt-get install socat
قم بإنشاء ملف داخل $BIN_PATH/gitproxy الخاص بك باستخدام:
#!/bin/sh
_proxy=192.168.192.1
_proxyport=3128
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport
لا تنسى أن تعطيه أذونات التنفيذ
chmod a+x gitproxy
قم بتشغيل الأوامر التالية لبيئة الإعداد:
export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy
فقط لنشر هذا لأنه أول نتيجة على Google، فإن منشور المدونة هذا الذي وجدته يحل المشكلة بالنسبة لي عن طريق تحديث شهادات الضفيرة.
http://www.simplicidade.org/notes/archives/2011/06/github_ssl_ca_errors.html
إعداد الوكيل إلى git
يأمر
git config --global http.proxy http://user:password@domain:port
مثال
git config --global http.proxy http://clairton:123456@proxy.clairtonluz.com.br:8080
لقد نجح هذا معي.
git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port
واجهت نفس المشكلة مع إصلاح مختلف قليلاً: إعادة بناء GIT بدعم HTTP
ال git:
البروتوكول لم يعمل من خلال جدار الحماية الخاص بشركتي.
على سبيل المثال، انتهت هذه المهلة:
git clone git://github.com/miksago/node-websocket-server.git
curl github.com
يعمل بشكل جيد، على الرغم من ذلك، لذلك أعرف بلدي http_proxy
متغير البيئة صحيح.
حاولت استخدام http
, ، كما هو موضح أدناه، ولكن حصلت على خطأ فوري.
git clone http://github.com/miksago/node-websocket-server.git
->>> fatal: Unable to find remote helper for 'http' <<<-
حاولت إعادة ترجمة git مثل ذلك:
./configure --with-curl --with-expat
ولكن لا يزال هناك خطأ فادح.
أخيرًا ، بعد عدة ساعات محبطة ، قرأت ملف التكوين ، ورأيت هذا:
# حدد CURLDIR=/foo/bar إذا كان رأس الضفيرة وملفات المكتبة موجودة
# /foo/bar/include و/foo/bar/lib الدلائل.
وتذكرت حينها أنني لم ألتزم curl
من المصدر ، وهكذا ذهبت تبحث عن ملفات الرأس.من المؤكد أنه لم يتم تثبيتها.كانت تلك هي المشكلة.لم يشكو من ملفات الرأس المفقودة.لذلك لم أدرك أن --with-curl
الخيار لم يفعل شيئًا (إنه في الواقع الخيار الافتراضي في إصداري من git
).
فعلت ما يلي لإصلاحه:
تمت إضافة الرؤوس اللازمة للتصنيع:
yum install curl-devel (expat-devel-1.95.8-8.3.el5_5.3.i386 was already installed).
إزالة
git
من/usr/local
(لأنني أريد أن يبقى التثبيت الجديد هناك).أنا ببساطة إزالة
git*
من/usr/local/share
و/usr/local/libexec
تم البحث عن التضمين الذي يحتوي على ملف
curl
وexpat
ملفات الرأس، وبعد ذلك (لأنني قرأتconfigure
) أضاف هذه إلى البيئة مثل هذا:export CURLDIR=/usr/include export EXPATDIR=/usr/include
جرى
configure
مع الخيارات التالية، والتي تم وصفها مرة أخرى فيconfigure
الملف نفسه، وكانت أيضًا الإعدادات الافتراضية ولكن ما هيك:./configure --with-curl --with-expat
و الأن
http
يعمل معgit
من خلال جدار الحماية الخاص بشركتي:git clone http://github.com/miksago/node-websocket-server.git Cloning into 'node-websocket-server'... * Couldn't find host github.com in the .netrc file, using defaults * About to connect() to proxy proxy.entp.attws.com port 8080 * Trying 135.214.40.30... * connected ...
يمكنك استخدام:
git config --add http.proxy http://user:password@proxy_host:proxy_port
قم بتعيين Git credential.helper على wincred.
git config --global credential.helper wincred
تأكد من وجود مُساعد واحد فقط
git config -l
إذا كان هناك أكثر من 1 ولم يتم ضبطه على الفوز، قم بإزالته.
git config --system --unset credential.helper
الآن قم بتعيين الوكيل بدون كلمة مرور.
git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80
تأكد من أن جميع الإعدادات التي أضفتها تبدو جيدة....
git config --global -l
الآن أنت جيد للذهاب!
هذه ليست مشكلة مع الوكيل الخاص بك.إنها مشكلة مع جيثب (أو جيت).لقد فشل بالنسبة لي على git-1.6.0.1 على نظام التشغيل Linux أيضًا. حشرة تم الإبلاغ عنها بالفعل (بواسطتك لا أقل).
تأكد من حذف فطائر اللحم الخاصة بك، فهي موجودة بالفعل على جوجل.يحرر:لا بد أنك كنت تحلم، أعتقد أنه لا يمكنك حذفها.يستخدم جوهر بدلاً من؟
$http_proxy مخصص لـ http://github.com....$https_proxy مخصص لـ https://github.com...
للنوافذ
انتقل إلى --> C:/Users/user_name/gitconfig
قم بتحديث ملف gitconfig بالتفاصيل أدناه
[http]
[https]
proxy = https://your_proxy:your_port
[http]
proxy = http://your_proxy:your_port
كيفية التحقق من رقم الوكيل والمنفذ الخاص بك؟
إنترنت إكسبلورر -> الإعدادات -> خيارات الإنترنت -> الاتصالات -> إعدادات LAN
يستخدم com.proxychains
proxychains git pull ...
تحديث: تم إيقاف استخدام سلاسل الوكلاء proxychains-ng بدلاً من.
لقد تمكنت من الالتفاف حول الوكيل باستخدام https ...بعض الوكلاء لا يتحققون حتى من https.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
c:\git\meantest>git clone http://github.com/linnovate/mean.git
Cloning into 'mean'...
fatal: unable to access 'http://github.com/linnovate/mean.git/': Failed connect
to github.com:80; No error
c:\git\meantest>git clone https://github.com/linnovate/mean.git
Cloning into 'mean'...
remote: Reusing existing pack: 2587, done.
remote: Counting objects: 27, done.
remote: Compressing objects: 100% (24/24), done.
rRemote: Total 2614 (delta 3), reused 4 (delta 0)eceiving objects: 98% (2562/26
Receiving objects: 100% (2614/2614), 1.76 MiB | 305.00 KiB/s, done.
Resolving deltas: 100% (1166/1166), done.
Checking connectivity... done
عملت الإجابات المذكورة أعلاه بالنسبة لي عندما لا يحتاج الوكيل الخاص بي إلى المصادقة.إذا كنت تستخدم وكيلًا يتطلب منك المصادقة، فيمكنك تجربة CProxy.لدي برنامج تعليمي صغير حول كيفية إعداده هنا،
http://blog.praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html
لقد تمكنت من الدفع والسحب وإنشاء اتفاقيات إعادة شراء جديدة.كل شيء سار على ما يرام.تأكد من إجراء عملية إلغاء تثبيت نظيفة وإعادة تثبيت الإصدار الجديد إذا كنت تواجه مشكلات مع Git كما فعلت.
كما تم الرد على هذا من قبل الكثيرين ولكن هذا فقط Winodws المستخدم الذي يقف وراء الوكيل مع المصادقة.
إعادة التثبيت (فشلت أولاً، لا تقم بالإزالة).
Goto ->
**Windows**
1. msysgit\installer-tmp\etc\gitconfig
Under [http]
proxy = http://user:pass@url:port
**Linux**
1. msysgit\installer-tmp\setup-msysgit.sh
export HTTP_PROXY="http://USER:PASS@proxy.abc.com:8080"
إذا كان لديك أي حرف خاص في استخدام المستخدم/المرور url_encode
كما أشار @ user2188765 بالفعل، حاول استبدال git://
بروتوكول المستودع مع http[s]://
.أنظر أيضا هذه الإجابة