উইন্ডোতে স্থানীয় ফাইল সিস্টেম জুড়ে জিআইটি ক্লোন রেপো


200

জিআইটি করার সময় আমি একটি সম্পূর্ণ নুব am আমি গত কয়েকদিন ধরে আমার প্রথম পদক্ষেপ নিয়ে চলেছি। আমি আমার ল্যাপটপে একটি রেপো সেটআপ করেছি, একটি এসভিএন প্রকল্প থেকে ট্রাঙ্কটি টেনে নামিয়েছি (শাখাগুলিতে কিছু সমস্যা ছিল, সেগুলি কাজ করে নি) তবে সমস্ত কিছুই ঠিক আছে বলে মনে হয়।

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

git clone file://192.168.10.51/code

দুর্ভাগ্যক্রমে এটি আমার পক্ষে কাজ করে না বলে মনে হচ্ছে:

সুতরাং আমি একটি গিট বাশ সেন্টিমিডি খুলি এবং উপরের কমান্ডটি টাইপ করি, আমি সি: \ কোডে (উভয় মেশিনের জন্য ভাগ করা ফোল্ডার) এটাই ফিরে পাই:

Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

আমি কীভাবে সবচেয়ে সহজ উপায়ে দুটি মেশিনের মধ্যে সংগ্রহস্থলটি ভাগ করতে পারি।

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

সেবাস্তিয়ানের পরামর্শ অনুসারে আমি নিম্নলিখিতগুলি পেয়েছি:

C:\code>git clone --no-hardlinks file://192.168.10.51/code
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

** সম্পাদনা - উত্তর **

যে সমস্ত সাহায্য করার জন্য ধন্যবাদ। আমি একটি ড্রাইভের ম্যাপিংয়ের চেষ্টা করেছি এবং এটি এতটাই ভেবেছিল যে আমি ফিরে যাব এবং ম্যাপিং ছাড়াই আবার চেষ্টা করব। চূড়ান্ত ফলাফল ছিল:

git clone file://\\\\192.168.0.51\code

এটি দুর্দান্ত কাজ করেছে।

ধন্যবাদ


ফাইল: //192.168.10.51/code কোনওভাবেই কোনও ফাইলের দিকে নির্দেশিত বৈধ ইউআরআই নয়, যেখানে ফাইল: // সি: ooফু \ বার.txt হচ্ছে
গ্রেগরি পাকোস

তারপরে আমি কীভাবে এই জাতীয় রেফারেন্স সহ কোনও দূরবর্তী মেশিনে নির্দেশ করতে পারি?
জন

আপনি সম্ভবত একটি নেটওয়ার্ক ড্রাইভ মানচিত্র করতে চান।
জোশ লি

আমার জন্য কাজ করেছেন - নোট করুন এটি উইন্ডোগুলির সাথে নির্দিষ্ট এবং উইন্ডোজে গিট ব্যাশ থেকে কাজ করবে না - সেমিডি বা পাওয়ারশেল ব্যবহার করতে হবে
ডেভ রায়েল

এটি সেমিডিতে চেষ্টা করেও কাজ করে না। এবং এছাড়াও "গিট ক্লোন ফাইলের" কোড "কী: // \\\\ 192.168.0.51 \ কোড" মানে? আমি এটি "সি: / ইউনিসেভারজেড / www / নমুনাপ্রজেক্ট /" দ্বারা প্রতিস্থাপন করেছি এবং এটি কার্যকর হয়নি। এটি বলেছিল যে এটি কোনও গিট সংগ্রহস্থল নয়
boi_echos

উত্তর:


177

আপনি ফাইল প্রোটোকলে ইউএনসি পাথ প্রয়োগ করে রিমোটের URL টি নির্দিষ্ট করতে পারেন । এর জন্য আপনার চারটি স্ল্যাশ ব্যবহার করা দরকার:

git clone file:////<host>/<share>/<path>

উদাহরণস্বরূপ, যদি আপনার মূল মেশিনে আইপি 192.168.10.51 এবং কম্পিউটারের নাম থাকে mainএবং এর একটি অংশ থাকে codeযা নিজেই গিট সংগ্রহস্থল, তবে নিম্নলিখিত দুটি আদেশই সমানভাবে কাজ করবে:

git clone file:////main/code
git clone file:////192.168.10.51/code

গিট সংগ্রহস্থলটি যদি উপ-ডিরেক্টরিতে থাকে তবে কেবল পথটি সংযোজন করুন:

git clone file:////main/code/project-repository
git clone file:////192.168.10.51/code/project-repository

2
সেই স্কিমের সাথে প্রমাণীকরণের কোনও উপায় আছে (অর্থাত্ ব্যবহারকারীর নাম / পাসওয়ার্ড)?
অন্তর্নিহিত

1
@ মজগিস আমি প্রায় উইন্ডোজই প্রায় ব্যবহার করি তাই আমার সমাধান উইন্ডোজের জন্য কাজ করে।
20:17

1
হ্যাঁ এটি উইন্ডোতে করার সর্বোত্তম উপায়।
নিকোলাস ডিপিয়াজ্জা

3
একটি প্রোটোকল ব্যবহার করতে পারে : //// ব্যবহারকারী: পাসওয়ার্ড @ হোস্ট: পোর্ট / পাথ স্বরলিপি, উদাহরণস্বরূপ: ফাইল: /// ব্যবহারকারী: password@192.168.10.51/code
পিস্তছে

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

125
$ git clone --no-hardlinks /path/to/repo

উপরের কমান্ডটি আপনার গিট সংগ্রহস্থলের সাহায্যে ডিরেক্টরিটির জন্য পসিক্স পাথ স্বরলিপি ব্যবহার করে। উইন্ডোজের জন্য এটি (ডিরেক্টরিতে ডিরেক্টরি C:/path/to/repoরয়েছে .git):

C:\some\dir\> git clone --local file:///C:/path/to/repo my_project

ভান্ডারটি ক্লোন হয়ে যাবে C:\some\dir\my_project। আপনি যদি file:///অংশ বাদ দেন তবে --localবিকল্পটি অন্তর্ভুক্ত।


7
এটি স্পেস সহ ফাইল পাথের জন্য আমার পক্ষে কাজ করেছে: গিট ক্লোন-এল ফাইল: // "সি: SP স্পেসগুলির সাথে কিছু পথ" "আমার_প্রজেক্ট
সেবাস্তিয়ান প্যাটেন

1
অসামান্য সাহায্য. এটি আমার উইন্ডোজ 7 মেশিনে আমার জন্য কাজ করে <<গিট ব্যাশ কমান্ড প্রম্পট থেকে> এর মতো কিছু: গিট ক্লোন ফাইল: /// সি: / ব্যবহারকারী / ব্যবহারকারীর নাম / repsitoryName
ফরহাদ

পরে আপনি সম্ভবত রিমোটটি সেট করতে চাইবেন .. নাহলে এটি আপনার অন্যান্য স্থানীয়কে উত্স হিসাবে নির্দেশ করে যা আমি সুপার ত্রুটিযুক্ত বলে মনে করি। গিট রিমোট -v ব্যবহার করুন; গিট রিমোট আরএম উত্স; গিট অ্যাড উত্স <repo-adress>> (যা আপনি স্থানীয় স্থানীয় রেপোতে গিট রিমোট-ভি করার পরে অনুলিপি করতে পারেন)
হানান

এটি সঠিক, আপনার ফাইল / //// এর মতো url ফর্ম ব্যবহার করার দরকার নেই, আপনি কেবল একটি ডিরেক্টরি ক্লোন করতে পারেন।
পিটার এন স্টেইনমেজ

14

হোস্টের নামের উত্তরটি আমার পক্ষে কার্যকর হয়নি তবে এটি করেছে:

গিট ক্লোন ফাইল: ////home/git/repositories/YYProject.git/


1
দেখে মনে হচ্ছে "ফাইল:" পরে আপনার অনেক বেশি স্ল্যাশ রয়েছে। আমার জন্য, ম্যাজিক সংখ্যাটি 3 টি স্ল্যাশ ছিল
মার্ক এফ গেররা

রহস্যময়। চারটি স্ল্যাশ আমাকে মারাত্মক ত্রুটি দিয়েছে। এটি কেবল তিনটি নিয়ে (আমার জন্য) কাজ করেছিল।
বিগ ম্যাকলার্জহিউজ

4
সিনট্যাক্সটি যে কাজ করে তা খুঁজে বের করার আমার কৌশলটি হ'ল ফোল্ডারে একটি টেক্সট ফাইল তৈরি করা এবং এটি ব্রাউজারে খুলতে টেনে আনতে। কোনও ফাইলের জন্য ডান ইউআরএল উপস্থিত হয়।
অ্যান দি অ্যাজিল

7

ফাইল: // ব্যবহার করে আমি এটি করতে সফল হয়েছিলাম তবে একটি অতিরিক্ত পথ চিহ্নিত করার জন্য একটি অতিরিক্ত স্ল্যাশ দিয়ে।

git clone file:///cygdrive/c/path/to/repository/

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

রিমোট যুক্ত করা একইভাবে কাজ করে

git remote add remotename file:///cygdrive/c/path/to/repository/

6

শেয়ারটিকে নেটওয়ার্ক ড্রাইভ হিসাবে মানচিত্র করুন এবং তারপর করুন

git clone Z:\

বেশিরভাগই কেবল একটি অনুমান; আমি সবসময় এসএসএস ব্যবহার করে এই জিনিসটি করি। অবশ্যই সেই মিষ্টতা অনুসরণ করার অর্থ হ'ল ল্যাপটপটি ধাক্কা / টানতে / টানতে প্রতিবার আপনার সেই ড্রাইভ ম্যাপ করা দরকার। আমি নিশ্চিত না যে আপনি উইন্ডোজের নীচে কীভাবে কাজ করার জন্য এসএএস আপ করবেন তা কিন্তু আপনি যদি এটি করে যাচ্ছেন তবে এটি তদন্তের পক্ষে উপযুক্ত।


@ কার্লোস: আমি মনে করি এটি কেবল তখনই কাজ করবে যদি আপনি ড্রাইভে cdঅন্য কোনও ডিরেক্টরিতে না যান Z:। IIRC; আমি বেশ কিছু সময়ের মধ্যে উইন্ডোজ ব্যবহারকারী হইনি। এছাড়াও এটি হতে পারে যে gitস্ট্যান্ডার্ড উইন্ডোজ কনভেনশন থেকে ড্রাইভ চিঠিগুলি আলাদাভাবে ব্যাখ্যা করে। আপনি কি `Z: try চেষ্টা করেছেন?
intuited

ত্রুটি ... যা "you Z: \`? "চেষ্টা করেছিলেন? ঠিক আছে, সঠিক পলায়নের সাথে সাথে কোড-মোড সক্ষম হয়ে উঠলে .. # নুররআর .. আমার মনে হয়, যাই হোক না কেন।
intuited

3

নিশ্চিত না যে এটি আমার গিট সংস্করণ (১..2.২) বা কি কারণে ছিল, তবে মেশিনের নাম এবং আইপি বিকল্পগুলি ব্যবহার করে উপরে তালিকাভুক্ত পদ্ধতিগুলি আমার পক্ষে কাজ করছে না। / গুরুত্বপূর্ণ নাও হতে পারে এমন একটি অতিরিক্ত বিবরণটি হ'ল রেপো একটি খালি রেপো যা আমি আরম্ভ করেছিলাম এবং একটি আলাদা মেশিন থেকে ধাক্কা দিয়েছিলাম।

আমি উপরোক্ত পরামর্শ মতো প্রকল্প 1 ক্লোন করার চেষ্টা করছিলাম যেমন:

$ git clone file:////<IP_ADDRESS>/home/user/git/project1
Cloning into project1...
fatal: '//<IP_ADDRESS>/home/user/git/project1' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

এবং

$ git clone file:////<MACHINE_NAME>/home/user/git/project1
Cloning into project1...
fatal: '//<MACHINE_NAME>/home/user/git/project1' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

কি করেনি আমার জন্য কাজ সহজ কিছু ছিল:

$ git clone ../git/project1
Cloning into project1...
done.

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


1

হয় পরম পাথ বা আপেক্ষিক পাথ প্রবেশ করান।

উদাহরণস্বরূপ নীচের প্রথমটি নিখুঁত পাথ ব্যবহার করে:

(এটি ফোল্ডারের অভ্যন্তরীণ which

~/git$ git clone --no-hardlinks ~/git/git_test1/   ~/git/bkp_repos/

নিম্নলিখিতগুলি আপেক্ষিক পাথ ব্যবহার করে:

~/git$ git clone --no-hardlinks git_test1/   bkp_repos2/

0

যদিও ইউএনসি পথটি গিট ২.২১ (ফেব্রুয়ারী, ২০১৮, নীচে দেখুন) থেকে সমর্থিত রয়েছে, গিট ২.২৪ (Q4 2019) অনুমতি দেবে

git clone file://192.168.10.51/code

আর নেই file:////xxx, ' file://' একটি ইউএনসি পথ ভাগ উল্লেখ করার জন্য যথেষ্ট is
" ইউএনসির সাথে গিট আনার ত্রুটি " দেখুন।


দ্রষ্টব্য, ২০১ since সাল থেকে এবং উইন্ডোজের জন্য গিটেরgit.exe সাথে প্যাকেজ করা মিংডাব্লু-64৪ , একটি ইউএনসি পথ সমর্থিত। (" এমএসএস, এমএসএস 2, এবং মিনজিডাব্লু -৪৪ একে অপরের সাথে সম্পর্কিত কীভাবে দেখুন ? ")

এবং গিট 2.21 (ফেব্রুয়ারি 2019) এর সাথে, এই সমর্থনটি এমএসএস 2 শেলের মধ্যেও ছড়িয়ে পড়ে (ইউএনসি পাথের চারপাশে উদ্ধৃতি সহ)।

দেখুন কমিট 9e9da23 , কমিট 5440df4 দ্বারা (17 জানুয়ারী 2019) জোহানেস Schindelin ( dscho)
সাহায্যপ্রাপ্ত: কিম গাইবেলস ( Jeff-G)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট f5dd919 , 05 ফেব্রুয়ারী 2019)

গিট ২.২১ এর আগে, গিটের স্পোন পদ্ধতিতে গণ্ডগোলের কারণে git-upload-packতাদের মধ্যে ব্যাকস্ল্যাশগুলি সহ পাথগুলি অতিক্রম করার সময় একটি সমস্যা দেখা দেয়: গিট উইন্ডোজের জন্য গিটের বিভিন্ন উদ্ধৃতি শব্দকোষ রয়েছে বলে শেলটি দিয়ে কমান্ড-লাইনকে বাধ্য করবে (এমএসওয়াইএস 2 হচ্ছে প্রোগ্রাম) git.exeনিজের মতো নিয়মিত উইন 32 এক্সিকিউটেবলের চেয়ে ।

উপসর্গ যে ফর্ম ইউএনসি পাথ দুটি ব্যাকস্ল্যাশ প্রথম \\myserver\folder\repository.gitহয় খুলে

এটি এখন প্রশমিত করা হয়েছে:

মিংডব্লিউ: বিশেষ ক্ষেত্রে আর্গুমেন্ট sh

এমএসওয়াইএস 2 রানটাইম কমান্ড-লাইন ওয়াইল্ডকার্ড সম্প্রসারণ এবং ডি-কোটিং অনুকরণের জন্য যথাসাধ্য চেষ্টা করে যা ইউনিক্স সিস্টেমে কলিং ইউনিক্স শেল দ্বারা সম্পাদিত হবে।

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

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

দ্রষ্টব্য: এমএসওয়াইএস 2 এক্সিকিউটেবলকে কল করার সময় এটি কেবল একটি সমস্যা, যখন মাইনিংডাব্লিউ এক্সিকিউটেবল যেমন গিট.এক্সে কল করার সময় নয়। তবে, আমরা ঘন ঘন এমএসওয়াইএস 2 এক্সিকিউটেবলকে ডাকি, বিশেষত use_shellচাইল্ড_প্রসেস স্ট্রাকচারে পতাকা নির্ধারণের সময় ।

.exeফাইলটি কার্যকর করতে হবে তা কোনও এমএসওয়াইএস 2 প্রোগ্রাম বা কোনও এমআইএনডাব্লু কিনা তা নির্ধারণের জন্য কোনও মার্জিত উপায় নেই ।
তবে যেহেতু শেলটি দিয়ে একটি কমান্ড লাইনটি ব্যবহারের ক্ষেত্রে বিষয়টি প্রচলিত তাই কার্যকর করার সময় আমাদের কমপক্ষে এই সমস্যাটি নিয়ে কাজ করা উচিত sh.exe

argv[0]" sh" কি না এবং এটি MSYS2 ব্যাশকে বোঝায় কিনা তা নির্ধারণের জন্য, আমাদের চেয়ে সাধারণভাবে ভিন্নভাবে যুক্তি উদ্ধৃত করা উচিত কিনা তা একটি কুৎসিত, হার্ড-কোডেড পরীক্ষাটি চালু করি ।

এটি এখনও পুরোপুরি সমস্যার সমাধান করে না, তবে কমপক্ষে এটি কিছু is

প্রসঙ্গক্রমে, git clone \\server\repoএটি git-upload-packপ্রক্রিয়াটির পথে যাওয়ার সময় ব্যাকস্ল্যাশগুলি ভুলভাবে পরিচালনা করার কারণে ব্যর্থ হয়ে সমস্যাটিও ঠিক করে দেয়।

তদ্ব্যতীত, আমাদের কেবল শ্বেতস্থান এবং ব্যাকস্ল্যাশগুলিই নয়, কোঁকড়ানো বন্ধনীগুলিকে উদ্ধৃত করার জন্যও যত্ন নেওয়া দরকার।
এলিয়াসগুলি প্রায়শই এমএসওয়াইএস 2 ব্যাশের মধ্য দিয়ে যায় এবং যেমন উপাধিগুলি ঘন ঘন প্যারামিটার পেয়ে থাকে তবে HEAD@{yesterday}এটি সত্যই গুরুত্বপূর্ণ।

দেখা t/t5580-clone-push-unc.sh


0

ক্লোন হওয়ার পরে, আমার জন্য ধাক্কা কাজ করছিল না।

সমাধান: যেখানে রেপো ক্লিন করা থাকে .git ফোল্ডার এবং কনফিগার ফাইল খুলুন।

দূরবর্তী উত্স url সেট মান জন্য:

[remote "origin"]
    url = file:///C:/Documentation/git_server/kurmisoftware
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.