এসএসএসের মাধ্যমে গিট ক্লোন


233

আমার একটি প্রকল্প রয়েছে যার ভিত্তিতে আমি গিট সংগ্রহস্থল তৈরি করেছি:

$ cd myproject  
$ git init  
$ git add .  
$ git commit  

আমি অন্য মেশিনে একটি খালি ক্লোন তৈরি করতে চেয়েছিলাম:

$ cd ..  
$ git clone --bare myproject  ssh://user@server:/GitRepos/myproject.git  

আমি ক্লোনটি কার্যকর করেছি তবে কোনও উত্তর মুদ্রণ করি নি। আমি সার্ভার মেশিনে লগইন করেছি এবং ফাইলগুলি কীভাবে সংরক্ষণ করা হয় তা দেখার চেষ্টা করেছি। পথ / গিটারপোস খালি ছিল, তাই আমি আবার ক্লোনটি করার সিদ্ধান্ত নিয়েছি:

$ git clone --bare myproject  ssh://user@server:/GitRepos/myproject.git

এবার উত্তরটি ছিল:

মারাত্মক: গন্তব্য পথ 'ssh: // ব্যবহারকারীর @ সার্ভার: /GitRepos/myproject.git' ইতিমধ্যে বিদ্যমান এবং এটি খালি ডিরেক্টরি নয়।

তবে আমি দেখলাম যে পথটি খালি ছিল।
এখানে কি হচ্ছে ?


আমার মনে হয় না দৌড়াদৌড়ি যা git clone --bareকরবে আপনি যা ভাবেন তা করবে।
ওলফার

3
আমার জন্য, ssh: // রিমোট প্রোটোকল ব্যবহার না করে একটি ফোল্ডার তৈরি করেছে। @ অ্যালেক-দ্য-গীকের উত্তর ব্যবহার করে কাজ করতে পেলাম। আপনি কি এর জন্য পছন্দসই উত্তরটি বেছে নিতে পছন্দ করবেন - এটি আপনার কাজ।
আকৌপ্পি

1
@ কৌপ্পি: সমস্ত উত্তর বিবেচনা করা ওপরের দায়িত্ব , তবে তারা সন্তুষ্ট না হওয়া পর্যন্ত কোনও উত্তর নির্বাচন করার কোনও বাধ্যবাধকতা নেই । (অবশ্যই, তাদের মনে করিয়ে দেওয়ার বা তাদের কাছে গ্রহণযোগ্য হওয়ার উত্তরের জন্য তাদের আরও কী তথ্য জিজ্ঞাসা করা উচিত নয়!)
jvriesem

অবশ্যই @jvriesem। এখন "এটি আপনার কাজ" মুছে ফেলবে। তবে এটি একটি পুরানো জিনিস ... :)
আকৌপ্পি

উত্তর:


219

এটি সম্ভবত প্রশ্নের সরাসরি সম্পর্কিত নয়; তবে একটি ভুল আমি সবেমাত্র নিজেকে তৈরি করেছি এবং আমি ওপিতে দেখতে পাচ্ছি, ইউআরএল স্পেসিফিকেশন ssh://user@server:/GitRepos/myproject.git- যথা, আপনার একটি কোলন :এবং একটি /পরের পথ উভয়ই এটি পরম পথ নির্দেশ করার পরে রয়েছে।

আমি তখন গিট ক্লোনটি পেয়েছি , ssh: হোস্টনাম - গিট, ডেভলপমেন্ট - নিকোলাস কুটিলারের সমাধান করতে পারিনি (যেমনটি আমি পেয়েছিলাম ত্রুটি ছিল, gitসংস্করণ 1.7.9.5 তে ), লক্ষণীয়:

কমান্ডটি আমি প্রথমে ব্যবহার করেছিলাম তা হ'ল আমি স্ক্রিপের মতো সিনট্যাক্স ব্যবহার করার চেষ্টা করেছি।

... যা আমার সমস্যা ছিল! সুতরাং মূলত gitসাথে ssh, আপনি হয় ব্যবহার

  • ssh://username@host.xz/absolute/path/to/repo.git/ - সার্ভারে পরম পাথের জন্য কেবল একটি ফরোয়ার্ড স্ল্যাশ
  • username@host.xz:relative/path/to/repo.git/- কেবল একটি কোলন (এটি অবশ্যই ssh://সার্ভারে আপেক্ষিক পাথের জন্য নেই ( usernameসার্ভার মেশিনের হোম ডাইরের সাথে সম্পর্কিত ))

আশা করি এটি কাউকে সাহায্য করবে,
চিয়ার্স!


84
এটি কাজ করে না। আপনি যদি ssh সহ কোনও আপেক্ষিক পথ নির্দিষ্ট করতে চান তবে আপনাকে ssh://উপসর্গটি হারাতে হবে । আমি এটিকে বের করার চেষ্টা করে মাত্র 20 মিনিট ব্যয় করেছি। git clone username@host.xz:relative/path/to/repo.git/কাজ করা উচিত.
বোবালুবা

2
এটি একটি ডেবিয়ান ৮.১.৪ এ গিট দিয়ে চেষ্টা করে ither প্রথম প্রচেষ্টাতে / গিটারপোসের অধীনে কোনও ডিরেক্টরি তৈরি করা হয়নি এবং ২ য় প্রচেষ্টাতে অভিযোগ করা হয়েছে যে পথটি ইতিমধ্যে বিদ্যমান রয়েছে। মূল সমস্যাটির মতোই রিপোর্ট করা হয়েছে
ডিএলএস

5
আপনার মন্তব্য @ বোবালুবা (এবং আপডেট হওয়া উত্তর) এর কারণে, আমাকে এটির জন্য 20 মিনিটও ব্যয় করতে হয়নি। ধন্যবাদ!
olafure

143

গিটহাবের ভাণ্ডারগুলির জন্য, চেষ্টা করুন:

git clone ssh://git@github.com/<user>/<repository name>.git

এসএসএসের মাধ্যমে ক্লোন করতে গিট স্থাপনের জন্য দেখুন:


<ইউজার> কি গিথুবে আমার ব্যবহারকারীর নাম বা গিথবের জন্য আমার ইমেল ঠিকানা? কারণ এই লিঙ্কটি আমাকে সর্বজনীন কী প্রজন্মের সময় ইমেল ঠিকানাটি ব্যবহার করার পরামর্শ দেয়। help.github.com/en/github/authenticating-to-github/… চেষ্টা করার পরে (ssh কী জেনার জন্য খালি পাসফ্রেজ) চেষ্টা করার পরেও আমি গিথুব থেকে রেপো ক্লোন করতে পারিনি। PS আমি এজেন্টের চাবিটি যোগ করি নি।
মিনি 18

গিটল্যাবের জন্যও একই কাজ করে। তার পূর্বে, আমাদের পরামর্শ অনুসারে আমাদের এসএসএইচ কী সেটআপ সক্ষম করতে হবে
ভেঙ্কাতারামন আর

45

আপনি যে সার্ভারটি কল করছেন তাতে আপনার ক্লোন কমান্ডটি চালানো দরকার। তবে আমি বাজি ধরছি যে আপনি আপনার স্থানীয় ক্লায়েন্টে কোনও এসএস সার্ভার চালাচ্ছেন না যাতে এটি আর কাজ করবে না। আপনি এই পদ্ধতির অনুসরণ করার পরামর্শ দিন (মেমোরি থেকে আমি যা করছি ম্যানুয়ালটি পরীক্ষা করে দেখুন)

  1. সার্ভার মেশিনে লগইন করুন।
  2. ব্যবহার করে একটি খালি রেপো তৈরি করুন git init --bare
  3. ক্লায়েন্ট মেশিনে আপনি আপনার রেপো সার্ভারে ঠেলাতে পারেন। git remote add origin ssh://user@server:/GitRepos/myproject.gitঅনুসরণ করেছেgit push origin master

দুর্দান্ত পরামর্শ! নতুনদের জন্য কিছু নোট (আমার মতো) যারা খাঁটি-সার্ভার-গিট-ফোল্ডারগুলির সাথে এর আগে কোনও চুক্তি করেননি: ২. সিডি / গিটারপোস; mkdir myproject.git; গিট ইনি - এর আগে সিডি মাইপ্রোজেজেট। আপনি এখানে কোনও কাজের অনুলিপি পাবেন না - রেপো ফাইল এবং ফোল্ডারগুলি (সাধারণত .git এ) আপনার জন্য খালি করা হবে, সুতরাং পতাকাটির নাম। ধন্যবাদ
আকৌপ্পি

2
"git init --bare" একটি .git ডিরেক্টরি তৈরি করে না। এটি ফাইলগুলি সরাসরি ফোল্ডারে রাখে। দূরবর্তী উত্স যুক্ত করার সময় আমি পাই: "" মারাত্মক: গিট সংগ্রহস্থল নয় (বা মাউন্ট পয়েন্ট / হোম পর্যন্ত কোনও পিতামাত) ফাইল সিস্টেম সীমানায় থামছে না (GIT_DISCOVERY_ACROSS_FILESYSTEM সেট করা নেই)।
ডিএলসা

10

দাবি অস্বীকার : এটি ভবিষ্যত দর্শকদের জন্য আরও দৃশ্যমান করা বোবালুবা দ্বারা করা মন্তব্যের একটি অনুলিপি । এটি আমাকে অন্য কোনও উত্তরের চেয়ে বেশি সহায়তা করেছে।


উদাহরণ হিসাবে ssh://ব্যবহার করার সময় আপনাকে উপসর্গটি ফেলে দিতে হবেgit clone

git clone git@github.com:owner/repo.git

5

এটা চেষ্টা কর.

ধাপ 1:

ls -al ~/.ssh

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

ধাপ ২:

ssh-keygen 

(ডিফল্ট মানের জন্য কী কী ব্যবহার করে) এখানে চিত্র বর্ণনা লিখুন পদক্ষেপ 3: কনফিগার ফাইল সেটআপ করতে

vim /c/Users/Willie/.ssh/config

হোস্ট gitlab.com
হোস্টনেম gitlab.com
ব্যবহারকারী গিট
আইডেন্টিটিফিল। / .Ssh / id_rsa

পদক্ষেপ 4:

git clone git@gitlab.com:<username>/test2.git

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

পদক্ষেপ 5:
আপনি পদক্ষেপ 4 সমাপ্ত করার পরে
1. পরীক্ষা 2.git ফাইলটি ডাউনলোড শেষ
হবে 2. আপনি file / .ssh এ নতুন ফাইল (পরিচিত_হস্তগুলি) পাবেন y
এখানে চিত্র বর্ণনা লিখুন

PS: আমি নিজেই id_rsa এবং id_rsa.ub তৈরি করি এবং আমি এটি গিটলব সার্ভারে সরবরাহ করি। যে কোনও ক্লায়েন্ট-পক্ষের (উইন্ডোজ এবং লিনাক্স) উভয় কী ব্যবহার করে।


4

গিট 101:

gitএকটি বিকেন্দ্রিত সংস্করণ নিয়ন্ত্রণ সিস্টেম। গিট দিয়ে উঠতে এবং চালাতে আপনাকে কোনও সার্ভারের দরকার নেই। তবুও আপনি এটি দেখতে দেখতে এটি দুর্দান্ত দেখতে চাইছেন তাই না? (আপনি যদি একাধিক কম্পিউটার থেকে একক প্রকল্পে কাজ করতে চান তবে এটি দরকারী))

সুতরাং একটি "সার্ভার" চালানোর জন্য আপনাকে চালনা করতে হবে git init --bare <your_project>.gitকারণ এটি একটি খালি সংগ্রহস্থল তৈরি করবে, যা আপনি নিজের মেশিনে কনফিগারেশন ফাইলগুলিতে ম্যাক না করে আমদানি করতে পারবেন your.git

এর পরে আপনি আপনার ক্লায়েন্টদের রেपोটি কাজ করার কথা বলে এটি ক্লোন করতে পারেন, তবে আমি দেখেছি যে কিছু ক্লায়েন্ট (যথা git-gui) সম্পূর্ণ শূন্য একটি রেপো ক্লোন করতে ব্যর্থ হবে। এটি চারপাশে কাজ করার জন্য আপনাকে চালানো দরকার cd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master। (দ্রষ্টব্য যে আপনি যদি অতীতে এমনটি না করে থাকেন তবে সেই মেশিনের গিটটির জন্য আপনার ব্যবহারকারীর নাম এবং ইমেলটি আপনাকে কনফিগার করতে হবে run

সুতরাং এই মুহুর্তে আপনি সহজেই চালিয়ে কোনও যন্ত্রে ভান্ডারটি ক্লোন করতে পারেন git clone <user>@<server>:<relative_path><your_project>.git। (অন্যরা যেমন নির্দেশ করেছে যে আপনি ssh://যদি পরম পথ ব্যবহার করেন তবে আপনার এটির উপসর্গের প্রয়োজন হতে পারে )) এটি ধরে নেওয়া হয় যে আপনি ইতিমধ্যে আপনার ক্লায়েন্ট থেকে সার্ভারে লগ ইন করতে পারেন। ( sshযদি আপনি রিমোট সার্ভারে প্রচুর পরিমাণে পদক্ষেপ নিতে চান তবে আপনি একটি কনফিগার ফাইল এবং কীগুলি সেট আপ করার জন্য বোনাস পয়েন্টও পাবেন ))

কিছু প্রাসঙ্গিক লিঙ্ক:
এটি আপনাকে যা জানার দরকার তা আপনাকে জানিয়ে দেয়।
এবং এটি তাদের জন্য যারা গিটের প্রাথমিক কাজগুলি জানেন তবে কখনও কখনও সঠিক বাক্য গঠনটি ভুলে যান।


এখনকার লিঙ্কগুলির উভয়ই মৃত বলে মনে হচ্ছে বা আপনি কী প্রত্যাশা করেছিলেন তা প্রদর্শন করছে না।
টড

2

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

আমি অবিশ্বাস্যভাবে নির্দিষ্ট কমান্ড দিচ্ছি। বলার বদলে <your folder>বলব /root/git। আমি যেখানেই আসল কমান্ডটি পরিবর্তন করছি কেবল সেখানেই আমার নির্দিষ্ট সার্ভারের নামটি প্রতিস্থাপন করা হচ্ছে example.com। আমি ফোল্ডারগুলির উদ্দেশ্যটি ব্যাখ্যা করব যাতে আপনি এটি অনুসারে এডজাস্ট করতে পারেন। দয়া করে আমাকে কোনও বিভ্রান্তির বিষয়ে জানান এবং আমি উত্তরটি আপডেট করব।

সার্ভারে গিট সংস্করণটি 1.7.1। সার্ভারটি সেন্টোস 6.3 (ফাইনাল)।

বিকাশ মেশিনে গিট সংস্করণটি 1.8.1.1। এটি ম্যাক ওএস এক্স 10.8.4।

কেন্দ্রীয় সংগ্রহস্থল এবং উত্পাদন মেশিন একই মেশিনে রয়েছে।

কেন্দ্রীয় সংগ্রহস্থল, যা svn ব্যবহারকারীরা 'সার্ভার' হিসাবে সম্পর্কিত হতে পারে নীচে কনফিগার করা হয়েছে। আমার একটি ফোল্ডার রয়েছে /root/gitযেখানে আমি আমার সমস্ত গিট সংগ্রহস্থল রাখি। আমি যে প্রকল্পকে 'ফুল' বলি তার গিট সংগ্রহস্থল তৈরি করতে চাই।

cd /root/git
git clone --bare flowers flowers.git

গিট কমান্ড দুটি বার্তা দিয়েছে:

Initialized empty Git repository in /root/git/flowers.git/
warning: You appear to have cloned an empty repository.

চিন্তার কিছু.

নিম্নলিখিত বিকাশ মেশিনে কনফিগার করা আছে। আমার একটি ফোল্ডার রয়েছে /home/kinjal/Sitesযেখানে আমি আমার সমস্ত প্রকল্পগুলি রেখেছি। আমি এখন কেন্দ্রীয় গিট সংগ্রহস্থল পেতে চাই।

cd /home/kinjal/Sites
git clone root@example.net:/root/git/flowers.git

এটি আমাকে এমন একটি জায়গায় পৌঁছে দেয় যেখানে আমি এতে স্টাফ যুক্ত করা শুরু করতে পারি। আমি প্রথমে গিট ফ্লো সেট আপ করেছি

git flow init -d

ডিফল্টরূপে এটি শাখায় রয়েছে develop। আমি এখন এখানে আমার কোড যুক্ত করছি। তারপরে আমাকে কেন্দ্রীয় গিট সংগ্রহস্থল প্রতিশ্রুতিবদ্ধ করা দরকার।

git add .
git commit -am 'initial'
git push

এই সময়ে এটি বিকাশ শাখায় ঠেলাঠেলি করে। আমি এটি মাস্টার শাখায় যুক্ত করতে চাই।

git flow release start v0.0.0 develop
git flow release finish v0.0.0
git push

দ্রষ্টব্য যে আমি মুক্তির শুরু এবং প্রকাশের সমাপ্তির মধ্যে কিছুই করি নি। এবং যখন আমি মুক্তির কাজটি শেষ করি তখন আমাকে দুটি ফাইল সম্পাদনা করার অনুরোধ জানানো হয়েছিল। এটি বিকাশকারী শাখাকে মাস্টারকে ঠেলে দিয়েছে।

প্রোডাকশন সাইটে, যা আমার কেন্দ্রীয় গিট সংগ্রহস্থলের মতো একই মেশিনে রয়েছে, আমি সংগ্রহস্থলটি ভিতরে রাখতে চাই /var/www/vhosts/example.net। আমি ইতিমধ্যে আছে /var/www/vhosts

cd /var/www/vhosts
git clone file:///root/git/flowers.git example.net

যদি প্রোডাকশন মেশিনটিও অন্য কোনও মেশিনে থাকে, git cloneকমান্ডটি উন্নয়ন মেশিনে ব্যবহৃত একটিটির মতো দেখায়।


1

সামনে, আমি আমার জিআইটি দক্ষতার কিছুটা ঘাটতি করছি।

এটি আপনার মেশিনে একটি খালি সংগ্রহস্থল ক্লোন করতে চলেছে, এতে কেবল ফোল্ডার রয়েছে .gitযার মধ্যে একটি লুকানো ডিরেক্টরি রয়েছে। এক্সিকিউট ls -alএবং আপনি দেখতে হবে .gitবাcd .git আপনার সংগ্রহস্থলটি ভিতরে ।

আপনি কী আরও বেশি জিআইটি দক্ষতা সহকারে কেউ সহায়তা করতে পারেন সেজন্য আপনার অভিপ্রায়টির বর্ণনা যুক্ত করতে পারেন? আপনি এটি কীভাবে করার পরিকল্পনা করছেন তা আপনি সত্যিই কী করতে চান না?


আমি আদেশটি ভুল ব্যাখ্যা করেছিলাম। আমি যা করেছি তা বর্তমান ডিরেক্টরিতে একটি সাব-ডাইরেক্টরি ট্রি ট্রি: / মাইপ্রোজেক্ট.git তৈরি করছিল। আমি ভেবেছিলাম আমি একটি দূরবর্তী ডিরেক্টরিতে ক্লোনিং করছি, তবে কমান্ডটি আসলে কী করে তা কোনও সংগ্রহস্থল থেকে ক্লোন করা।
dsa

0

আমি করলাম: গিট ক্লোন --bare "/ GITREPOSITORIES / RepoA" "ssh: // luc @ EERSTENASDS119J / ভলিউম 1 / রেপোএ" ফলাফল: মারাত্মক: গন্তব্য পথ 'ssh: // luc @ EERSTENASDS119J / ভলিউম 1 / রেপোএ ইতিমধ্যে বিদ্যমান এবং রয়েছে খালি ডিরেক্টরি নয়।

সিস্টেমটি আমার বর্তমান পথে ssh: // luc @ EERSTENASDS119J / ভলিউম 1 / রেপোএ একটি ডিরেক্টরি তৈরি করেছে।

সুতরাং গিট ক্লোনটি ইউআরএল স্পেসিফিকেশনটির ব্যাখ্যা দেয় না। অ্যালেকের কাজটি ব্যবহার করা হয়েছে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.