سؤال

ملحوظة:في حين أن حالة الاستخدام الموضحة تتعلق باستخدام الوحدات الفرعية داخل المشروع، فإن الأمر نفسه ينطبق على الوضع العادي 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 المصادق عليه.لا يتم تشغيل الوكيل في كلتا الحالتين.لكنني أجد طريقة للتغلب على هذا.

  1. ثَبَّتَ المفتاح, أو البدائل الأخرى التي تريدها.
  2. قم بإنشاء ملف تفويض.التنسيق ل authfile يكون: user_name:password, ، و user_name, password هو اسم المستخدم وكلمة المرور الخاصة بك للوصول إلى الوكيل الخاص بك.لإنشاء مثل هذا الملف، ما عليك سوى تشغيل أمر مثل هذا: echo "username:password" > ~/.ssh/authfile.

  3. يحرر ~/.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).

فعلت ما يلي لإصلاحه:

  1. تمت إضافة الرؤوس اللازمة للتصنيع:

    yum install curl-devel
    (expat-devel-1.95.8-8.3.el5_5.3.i386  was already installed).
    
  2. إزالة git من /usr/local (لأنني أريد أن يبقى التثبيت الجديد هناك).

    أنا ببساطة إزالة git* من /usr/local/share و /usr/local/libexec

  3. تم البحث عن التضمين الذي يحتوي على ملف curl و expat ملفات الرأس، وبعد ذلك (لأنني قرأت configure) أضاف هذه إلى البيئة مثل هذا:

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
    
  4. جرى configure مع الخيارات التالية، والتي تم وصفها مرة أخرى في configure الملف نفسه، وكانت أيضًا الإعدادات الافتراضية ولكن ما هيك:

    ./configure  --with-curl --with-expat
    
  5. و الأن 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]://.أنظر أيضا هذه الإجابة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top