গিট: // প্রোটোকল সংস্থা দ্বারা অবরুদ্ধ, আমি কীভাবে এটি পেতে পারি?


188

মতো কিছু করার চেষ্টা করা কার্যকর git clone git://github.com/ry/node.gitহবে না, এর ফলস্বরূপ:

Initialized empty Git repository in /home/robert/node/.git/
github.com[0: 207.97.227.239]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)

তবে এইচটিটিপি-র উপরে ক্লোনিং ঠিকঠাক কাজ করে। এতক্ষণ আমি একত্রিত হয়েছি যে এটি প্রোটোকলের ক্ষেত্রে একটি সমস্যা, তবে আমি ক্লাউড 9 ইনস্টল করার চেষ্টা করছি যা কমান্ডের প্রয়োজন

git submodule update --init --recursive

যা গিট: // প্রোটোকল এবং ব্যর্থ হওয়ার চেষ্টা করছে। সেই আদেশটি কীভাবে কাজ করবে বা কীভাবে পরিবর্তন করার কোনও উপায় আছে?


আপনার কি এসএসএইচ অ্যাক্সেস আছে? নাকি শুধু এইচটিটিপি?
পাবলো সান্তা ক্রুজ

56
লোকেরা গিট প্রশ্ন বন্ধ করার চেষ্টা করছে কি করে? এফএকিউ অনুসারে, এসও এর স্কোপটিতে "প্রোগ্রামাররা সাধারণত ব্যবহৃত সফ্টওয়্যার সরঞ্জাম" অন্তর্ভুক্ত করে। এখানে ছয় হাজারেরও বেশি গিট প্রশ্ন রয়েছে। তারা এখানে।
ক্যাসাবেল

9
আপনি git config --global url.https://.insteadOf git://
গিটটি

উত্তর:


426

এটি যদি আপনার ফায়ারওয়াল গিট: প্রোটোকল পোর্ট (9418) অবরুদ্ধ করে নিয়ে সমস্যা হয় তবে আপনার আরও ধ্রুবক পরিবর্তন করা উচিত যাতে প্রতিটি গিট রেপোর জন্য আপনাকে অন্য পোস্টের দ্বারা প্রস্তাবিত আদেশগুলি মনে রাখতে হবে না।

নীচের সমাধানটি কেবল সাবমডিউলগুলির জন্যও কাজ করে যা গিট: প্রোটোকলও ব্যবহার করতে পারে।

যেহেতু গিট বার্তাটি সত্যই তাত্ক্ষণিকভাবে ফায়ারওয়াল ব্লকিং পোর্ট 9418 এ নির্দেশ করে না তাই আসল সমস্যা হিসাবে এটি নির্ণয়ের চেষ্টা করি।

সমস্যা নির্ণয় করা হচ্ছে

তথ্যসূত্র: https://superuser.com/q/621870/203918 এবং https://unix.stackexchange.com/q/11756/57414

ফায়ারওয়াল আমাদের সমস্যা সৃষ্টি করে কিনা তা নির্ধারণ করতে আমরা বেশ কয়েকটি সরঞ্জাম ব্যবহার করতে পারি - আপনার সিস্টেমে যে কোনও ইনস্টলড রয়েছে তা ব্যবহার করুন।

# Using nmap
# A state of "filtered" against port 9418 (git) means
#   that traffic is being filtered by a firewall
$ nmap github.com -p http,git

Starting Nmap 5.21 ( http://nmap.org ) at 2015-01-21 10:55 ACDT
Nmap scan report for github.com (192.30.252.131)
Host is up (0.24s latency).
PORT     STATE    SERVICE
80/tcp   open     http
9418/tcp filtered git

# Using Netcat:
# Returns 0 if the git protocol port IS NOT blocked
# Returns 1 if the git protocol port IS blocked
$ nc github.com 9418 < /dev/null; echo $?
1

# Using CURL
# Returns an exit code of (7) if the git protocol port IS blocked
# Returns no output if the git protocol port IS NOT blocked
$ curl  http://github.com:9418
curl: (7) couldn't connect to host

ঠিক আছে, সুতরাং এখন আমরা নির্ধারণ করেছি যে এটি আমাদের গিট বন্দরটি ফায়ারওয়াল দ্বারা অবরুদ্ধ, আমরা এটি সম্পর্কে কী করতে পারি? পড়তে :)

বেসিক ইউআরএল পুনর্লিখন

গিট ইউআরএলগুলি ব্যবহার করে পুনরায় লেখার একটি উপায় সরবরাহ করে git config। কেবল নিম্নলিখিত আদেশটি জারি করুন:

git config --global url."https://".insteadOf git://

এখন, যেমন যাদু দ্বারা পারলে সব Git কমান্ড প্রতিকল্পন সঞ্চালন করা হবে git://থেকেhttps://

এই আদেশটি কী পরিবর্তন করেছে?

আপনার বিশ্বব্যাপী কনফিগারেশনটি ব্যবহার করে দেখুন:

git config --list

আপনি আউটপুটে নিম্নলিখিত লাইনটি দেখতে পাবেন:

url.https://.insteadof=git://

~/.gitconfigনিম্নলিখিত দুটি লাইন যুক্ত করা হয়েছে যেখানে আপনি এখন দেখতে পাবেন যে ফাইলটিতে এটি কীভাবে দেখায় তা দেখতে পাবেন :

[url "https://"]
    insteadOf = git://

আরও নিয়ন্ত্রণ চান?

কেবল প্রতিস্থাপনে আরও একটি সম্পূর্ণ / নির্দিষ্ট URL ব্যবহার করুন। উদাহরণস্বরূপ, কেবল গিটহাব ইউআরএলগুলি গিট: // এর পরিবর্তে https: // ব্যবহার করতে আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন:

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

আপনি বিভিন্ন প্রতিস্থাপন ব্যবহার করে এই কমান্ডটি একাধিকবার চালাতে পারেন। তবে, ইভেন্টটি যে কোনও ইউআরএল একাধিক প্রতিস্থাপনের সাথে মেলে, দীর্ঘতম ম্যাচটি "জিতেছে"। কেবলমাত্র ইউআরএল প্রতি একক প্রতিস্থাপন করা হবে।

সিসাদমিনগুলির জন্য সিস্টেম-ওয়াইড পরিবর্তনসমূহ

আপনি যদি লিনাক্স সিসাদমিন হন এবং আপনি না চান যে আপনার ব্যবহারকারীরা উপরের যন্ত্রণাগুলি কাটাতে পারেন আপনি দ্রুত সিস্টেম-ব্যাপী গিট কনফিগারেশন পরিবর্তন করতে পারেন।

কেবল নীচের বিষয়বস্তুগুলি সম্পাদনা বা যুক্ত করুন /etc/gitconfigএবং ভোইলা আপনার ব্যবহারকারীদের উপরের কোনওটি সম্পর্কে চিন্তা করতে হবে না:

[url "https://"]
    insteadOf = git://

9
উজ্জ্বল সরলতা!
ল্যান্স হান্ট

দুর্দান্ত কাজ! আর অনুসন্ধান এবং প্রতিস্থাপন নেই। স্ক্রিপ্ট তৈরি করুন এখনই কাজ করে। এই উত্তরটি আমাকে অনেক সময় বাঁচিয়েছিল। ধন্যবাদ!
জেরেমি বেল

7
কোন ইউআরএল রূপান্তরিত হয় তার আরও কিছুটা নিয়ন্ত্রণের জন্য, আপনি URL টির কিছু অংশও নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ: আমার একটি ব্যক্তিগত অভ্যন্তরীণ সার্ভার রয়েছে 'myserver.lan.example.com' যা এসটিএইচ (গিটল্যাব) এর উপরে গিট রেপো হোস্ট করে তবে এইচটিটিপিএস নয়। অতএব, আমি সুবিধাজনক কী প্রমাণীকরণের সুবিধা নিতে চাইলে আমাকে অবশ্যই এসএসএইচ ব্যবহার করতে হবে। আমি গিথুব থেকে রেপোও ব্যবহার করি তবে আমার কর্পোরেট ফায়ারওয়াল এসএসএইচকে গিথুবকে ব্লক করে। আমি 'গিট: //' এর সমস্ত দৃষ্টান্ত কেবল 'https: //' দিয়ে প্রতিস্থাপন করতে চাই না কারণ এর ফলে গিটল্যাব ভেঙে যায়। সমাধানটি হ'ল git config --global url."https://github".insteadOf git://github
क्লেটিজার্মেকে 1

2
আমি সাইগউইনের অভ্যন্তর থেকে গিট চালিয়ে যাচ্ছিলাম এবং আমি এই কাজটি করতে পারার একমাত্র উপায় ছিল 'সিসাডমিনদের জন্য সিস্টেম-ওয়াইড পরিবর্তনসমূহ' করা এবং 'url.https: //.insteadof=git: //' এ পরিবর্তনগুলি যুক্ত করা 'সি: \ প্রোগ্রাম ফাইল (x86) it গিট \ ইত্যাদি it গিটকনফিগ' ফাইল। ইঙ্গিতটির জন্য ধন্যবাদ!
ক্রেগ

3
এই পরিবর্তনটি পূর্বাবস্থায় রাখতে কেউ ব্যবহার করতে পারেনgit config --global --unset url."https://".insteadOf
djskinner

29

গিথুব http (গুলি) -এর অ্যাক্সেসও সরবরাহ করে যা আপনার সংস্থা দ্বারা অবরুদ্ধ হওয়ার সম্ভাবনা খুব কম। সাবমডিউলটি এটি ব্যবহার করতে বলার জন্য, আপনি এটি করতে পারেন:

git submodule init
git config submodule.<name>.url https://github.com/...
git submodule update

এটি হ'ল দীক্ষা এবং আপডেটগুলি পৃথক কমান্ড কেন - আপনি দর্শন করতে পারেন, অবস্থানগুলি কাস্টমাইজ করতে পারেন, তারপরে আপডেট করতে পারেন। update --initআপনার যখন কোনও ইউআরএল কাস্টমাইজ করার দরকার হয় না তখন কেবল একটি শর্টকাট।

এই জুড়ে অন্য যে কেউ ঘটে, আপনি অবশ্যই একটি এসএসএল ইউআরএল ব্যবহার করতে পারেন (যদি আপনার সংস্থা গিট ব্লক করে: // তবে এসএসএস নয়) তবে এই ক্ষেত্রে ওপি সম্ভবত রিমোট রেপোতে এসএসএইচ অ্যাক্সেস পাবে না।


এর মতো শব্দগুলি সম্ভবত আমার পক্ষে কাজ করবে, যদিও মনে হয় আমাকে পৃথকভাবে প্রত্যেকের মধ্য দিয়ে যেতে হবে। বিশেষত যদি বিষয়টি বিবেচনা করে তবে github.com/ajaxorg/cloud9 করছিল ।
রবার্ট

4
@Robert: যদি আরও অনেক কিছু আছে, আপনি কনফিগ ফাইল সরাসরি সম্পাদনা এবং একটি অনুসন্ধান করেন এবং প্রতিস্থাপন পারে: sed -i 's@git://github@https://github@' .git/config
ক্যাসকেবেল

হুম, কোনও কারণে তারা ফাইলে HTTP: // বলে, কিন্তু কমান্ডটি এখনও চেষ্টা করতে পারে: //
রবার্ট

1
আমি ওপিতে বর্ণিত একই সমস্যাটি পেয়েছি, তবে আমি যখন এই সমাধানটি ব্যবহার করি তখনও এটি ব্যর্থ হয় তবে কিছুটা ভিন্ন ত্রুটির সাথে। এটি বলেছে "ত্রুটি: https: // অ্যাক্সেস করার সময় ... মারাত্মক: HTTP অনুরোধ ব্যর্থ হয়েছে" কারও কি এ সম্পর্কে কোনও অন্তর্দৃষ্টি আছে? আমার হোস্ট কি কিছু ব্লক করছে? আমার অন্যান্য সাবমডিউলগুলি সূক্ষ্ম আপডেট করে, আমি কেবল একটিতে সমস্যায় পড়েছি।
জো স্প্রেগ

13

স্পর্শ গিট কনফিগারেশনের সাথে জড়িত না এমন আরেকটি বিকল্প হ'ল নিয়মিত 22 পোর্টের পরিবর্তে 443 পোর্ট ব্যবহার করার জন্য এসএসএস সেটিংস পরিবর্তন করা।

তথ্যসূত্র: এইচটিটিপিএস পোর্টের মাধ্যমে এসএসএইচ ব্যবহার করা

এই নিবন্ধ থেকে:

edit the file at ~/.ssh/config, and add this section:

Host github.com
   Hostname ssh.github.com   
   Port 443

এরপরে, আমি গিথুবকে সাফল্যের সাথে গিট দিতে সক্ষম হয়েছি। বাড়িতে আপনি ssh কনফিগারেশনটি ঠিক তেমনভাবে পরিবর্তন করতে পারেন যদি আপনি চান।


7

আমিও কিছুক্ষণ একই সমস্যা ছিল। তারপরে আমি প্রস্তাবিত কমান্ডটি ব্যবহার করে গিট কনফিগারেশন পরিবর্তন করার চেষ্টা করেছি:

git config --global url."https://".insteadOf git://

যা দুর্ভাগ্যক্রমে আমার জন্য কৌশলটি করেনি । আমার তখনও একই সমস্যা ছিল!

যা শেষ পর্যন্ত আমার সমস্যার সমাধান হয়েছিল তা হ'ল, আমি নীচের কমান্ডটি ব্যবহার করে আমার সংগ্রহস্থলের রিমোট url পুনরায় সেট করেছি:

git remote set-url origin https://github.com/<my_user_name>/<my_repo_name>.git

যা আগে এরকম ছিল:

git remote set-url origin git@github.com:<my_user_name>/<my_repo_name>.git

রিমোট ইউআরএল সেট করার পরে সমস্যাটির https://পরিবর্তে git@git.comআমার জন্য সমস্যার সমাধান হয়েছিল।


1
আমি একটি অনুরূপ সমস্যা অভিজ্ঞ। এটি বিশ্বব্যাপী সেট করা কেবল ক্লোন করা ক্লোনিকেই এগিয়ে যাওয়ার উপর প্রভাব ফেলে এবং কোনও প্রতিক্রিয়াহীনভাবে পরিবর্তন করে না।
টেলর এডমিস্টন

2

উপরের নাথনের উত্তরটি প্রসারিত করার সাথে সাথে, যদি আপনার কর্পোরেট ফায়ারওয়াল https এ হস্তক্ষেপ করে তবে আপনি ssh প্রোটোকলটিও দেখতে পারেন। আমার ক্ষেত্রে ফায়ারওয়াল গিট প্রোটোকলকে ব্লক করছে, https এর জন্য এসএসএল শংসাপত্র পুনরায় জারি করছিল এবং এটি আমার জন্য কঠোর-এসএসএল বিকল্পটি বন্ধ করে দিয়েও বিরতি করছিল। আপনি এসএসএস-এর জন্য অনুরূপ ইউআরএল পুনর্লিখন করতে পারেন, এবং গিথুবতে বর্ণিত হিসাবে একটি এসএসএস কী / জুড়ি তৈরি করতে পারেন ।

 git config --global url."ssh://git@github.com".insteadOf git://github.com

আপনার গিট ইনস্টল করার জন্য আপনাকে এসএসএল-এজেন্ট চালু করতে হবে।


1

এটি কারণ নোড সার্ভারের জন্য জিআইটি অ্যাড্রেস পরিবর্তিত হয়েছে আপনাকে এখন প্রবেশ করতে হবে:

গিট ক্লোন https://github.com/joyent/node

শুভকামনা


6
এই প্রশ্নটি ফেব্রুয়ারি থেকে, যখন উপরের বৈধ URL ছিল।
রবার্ট

@ ক্যালক্রিক্রিপ্টে লিঙ্কটি কোনও কমান্ডের অংশ যা কোড ট্যাগ করা নয়, এটি তথ্যের লিঙ্ক হতে বোঝানো হয়নি।
মাইক প্রিকআপ

0

ভূমিকা

আমি এখানে আমার নিজস্ব পদ্ধতির যোগ করব ( আপনার যদি https সমর্থন করে এমন কোনও পাবলিক অ্যাক্সেসযোগ্য গিট সংগ্রহস্থল থাকে তবে এটির প্রয়োজন নেই )।

আমি এমন একটি প্রতিষ্ঠানে কাজ করি যেখানে গিট সংগ্রহস্থলটি কেবলমাত্র কোম্পানির অভ্যন্তর থেকে অ্যাক্সেসযোগ্য। তবে আমি বাসা থেকেও কাজ করি।

আমি কীভাবে বাড়ি থেকে কোম্পানির সংগ্রহস্থলের দিকে ঠেলা দেব?

আমি আমার গুগল ড্রাইভে একটি ফোল্ডার দিয়ে একটি সংগ্রহস্থল তৈরি করেছি। গিট এবং https ব্যতীত, আপনি সংগ্রহস্থলগুলিকে পথ হিসাবে অন্তর্ভুক্ত করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন

সুতরাং, উত্সকে ধাক্কা দেওয়ার পরিবর্তে আমি "জিড্রাইভ" তে চাপ দিন। এর ফলে ফোল্ডারটি আমার হোম ওয়ার্কস্টেশন থেকে গুগল ড্রাইভে সিঙ্ক হয়ে যায় এবং তারপরে আমার ওয়ার্ক কম্পিউটার পরিবর্তনগুলি টানতে পারে। অধিকন্তু, যেহেতু ".git" ডিরেক্টরিতে কখনও কখনও ফাইলগুলি সিঙ্ক হয় না, তাই আমি ফোল্ডারটিকে অস্থায়ীভাবে নামকরণ করি যেমন "ট্রাঙ্ক" থেকে "ট্রাঙ্ক 2"। এটি হোম এবং কাজের উভয় কম্পিউটারকেই Google ড্রাইভের সাথে 100% সিঙ্ক করতে বাধ্য করে।

তারপরে আমি চেকপয়েন্ট-ভিপিএন রিমোট (বা টিমভিউয়ার) এর মাধ্যমে আমার ওয়ার্ক কম্পিউটারে লগ-ইন করি এবং আমার আপডেটগুলি ওয়ার্ক গিট সংগ্রহস্থলটিতে ঠেকান push

অতিরিক্তভাবে, প্রক্রিয়াটি অবরুদ্ধ কোম্পানির বাইরে গিট সংগ্রহস্থলের দিকে ঠেলাঠেলি করার জন্য বিপরীতভাবে কাজ করবে।

  1. ওয়ার্কস্টেশন গিট রেপো থেকে গুগল ড্রাইভে ফোল্ডারে চাপ দিন।
  2. GDrive এ অস্থায়ীভাবে প্রকল্প ডিরেক্টরিটির নাম পরিবর্তন করে 100% সিঙ্ক জোর করুন।
  3. একরকম রিমোট এবং ধাক্কা পরিবর্তনগুলির মাধ্যমে হোম কম্পিউটার অ্যাক্সেস করুন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.