কিভাবে বর্তমান ডিরেক্টরিতে ক্লিট করতে গিট পাবেন


499

আমি করছি:

git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./

আমি পাচ্ছি:

মারাত্মক: গন্তব্য পথ '। ইতিমধ্যে বিদ্যমান এবং এটি একটি খালি ডিরেক্টরি নয়।

আমি পথ জানি। আগে থেকেই আছে. এবং আমি আশ্বাস দিতে পারি যে ডিরেক্টরিটি ফাঁকা। (আমি ভিতরে এলএস করি এবং কিছুই দেখি না!)

বর্তমান ডিরেক্টরিটিতে প্রকল্পটি ক্লোন করতে আমি এখানে কী মিস করছি?


16
আপনি যদি একটি ls -aকাজ করেন তবে আপনি একটি .gitডিরেক্টরি দেখতে পাচ্ছেন ?
ডেভিন ট্রিওন

2
@ ড্রিটায়ন - না। তবে আমি একটি ডিএস_স্টোর দেখতে পাচ্ছি এটি যাই হোক না কেন। সম্ভবত আমার এ থেকে মুক্তি পাওয়া উচিত। এর জন্য ধন্যবাদ: এস
এমইএম

@ ধন্যবাদ আপনার দ্রুত উত্তর। জেমস ম্যাকলাঘলিন যে কোনও খালি ডিরেক্টরিতে গিয়েছি তা নিশ্চিত করার জন্য এটি একটি সুন্দর কমান্ড বলে মনে হচ্ছে। :)
এমইএম

1
আমি ধরে নিচ্ছি তাহলে আপনি ম্যাক এ চলেছেন । এটি কী সহায়তা করে: স্ট্যাকওভারফ্লো.com
ডেভিন ট্রায়ন

এটির মূল্যের জন্য, আপনি যে কোনও ফোল্ডার ম্যাকটিতে ব্রাউজ করেন সেগুলিতে এই ছোট্ট ফাইলগুলি তৈরি করা হবে। উভয় উইন্ডোজ ব্যবহারকারী যারা একই শেয়ার ব্যবহার করছেন এবং যে কোনও সিস্টেমের জন্য (যেমন গিট) ফোল্ডারগুলি খালি থাকার প্রয়োজন হয় বা ফোল্ডারের প্রতিটি ফাইলে প্রোগ্রামিয়ালি ক্রিয়াকলাপ সম্পাদন করে তাদের জন্য এটি অত্যন্ত বিরক্তিকর।
jsims281

উত্তর:


508

কেবল তার পাশে একটি বিন্দু রাখুন

git clone git@github.com:user/my-project.git .

থেকে git help clone:

বিদ্যমান ডিরেক্টরিতে ক্লোনিং কেবলমাত্র ডিরেক্টরি খালি থাকলেই অনুমোদিত।

ডিরেক্টরিটি খালি রয়েছে তা নিশ্চিত করুন (পরীক্ষা করুন ls -a), অন্যথায় কমান্ডটি ব্যর্থ হবে।


18
সম্মত হয়েছেন, নোট করুন যে কোনও ম্যাকের উপর, অনুসন্ধানকারী দ্বারা তৈরি একটি। ডিএসএসটোর ফাইল অটো ক্লোনটি ব্লক করবে। চেক করুনls -la
পিটিম

281
নাঃ। এটি সঠিক উত্তর নয়। এটি এখনও "মারাত্মক: গন্তব্য পথ" প্রত্যাবর্তন করবে '' ইতিমধ্যে বিদ্যমান এবং খালি ডিরেক্টরি নয় ""
সিড সরস্বতী

16
গিট v1.8.3.2 ব্যবহার করে আমার জন্য কাজ করে। @ সিডসরস্বতী আপনি কি নিশ্চিত যে বর্তমান ডিরেক্টরি খালি আছে ?
ওয়েসলি বাগ

3
@ সিডসরস্বতী আমার জন্য ভালই ডিরেক্টয়টি ফাঁকা নয়, তবে আমি এ বিষয়ে যত্ন করি না তাই গিট কেন হবে তা আমি নিশ্চিত নই। কেন গিট ক্লোনটি একটি খালি নয় ডিরেক্টরিতে ফেলতে পারে না? অবশ্যই ফাংশনালি এটি কেবল একটি প্রাথমিক ডাউনলোড।
নাথান হর্নবি

3
mkdirথেকে hardlinks সৃষ্টি .এবং ..ডিফল্টরূপে তাই একটি নতুন ডিরেক্টরির টেকনিক্যালি ইউনিক্স ভিত্তিক সিস্টেমের মধ্যে "খালি" হয় সবকিছু? আমার অর্থ, আমি অনুমান করি আপনি পারতেন unlink .এবং unlink ..তবে ক্লোনিংয়ের পরে আপনি যদি আবার লিঙ্ক করতে ভুলে যান তবে এটি আপনাকে বড় সমস্যার কারণ হতে পারে ....
সেলডমনিডি

351

নিম্নলিখিতটি সমস্ত ক্ষেত্রে সম্পূর্ণরূপে একটি ক্লোনর সমতুল্য নয় তবে আমার জন্য কৌশলটি করেছেন:

git init .
git remote add -t \* -f origin <repository-url>
git checkout master

আমার ক্ষেত্রে এটি একটি .git/configফাইল তৈরি করে যা ক্লোন করার সময় যা পাই তার সমতুল্য।


40
তদ্ব্যতীত, এটি হ'ল প্রবণতা যা বর্তমান সামগ্রীটি টিকে থাকতে দেয় - বলুন যদি আপনি আপনার ডটফাইলগুলি আপনার হোম ডিরেক্টরিতে ক্লোনিং করে থাকেন।
rbellamy

7
এর সাথে অবশেষে গিট আমাকে বাচ্চার মতো চিকিত্সা না করে আমার যে কোনও ফোল্ডারে ক্লোন করতে দেয়। আমি যখন একটি অস্থায়ী .gitignore যুক্ত *(সমস্ত কিছু উপেক্ষা) যুক্ত করেছিলাম git checkout masterতখনও ফোল্ডারে আরও কিছু ফাইল থাকা সত্ত্বেও আমি সম্পাদন করতে পারতাম । তারপরে সংগ্রহস্থল থেকে সমস্ত কমিট করা ফাইল ক্লোন করা হয়েছিল (এবং অস্থায়ী .gitignore রেপো থেকে যথাযথ .gitignore দ্বারা ওভাররাইট করা হয়েছিল)। এটা সব আশ্চর্যজনকভাবে কাজ করে। এটি নিজে ব্যবহার করে git clone -fবা কোনও কিছু করে এইভাবে হওয়া উচিত ।
পলম্যাগ

1
আপনার যদি পৃথক / নতুন / পরিবর্তিত ফাইল থাকে তবে (... ফাইলগুলি চেকআউট দ্বারা ওভাররাইট করা হবে ... বাতিল করা হবে) ব্যবহার করুন: গিট চেকআউট মাস্টার -f
ভিজুয়ালেক্স

3
-t \*যেমন ডিফল্ট অপ্রয়োজনীয়।
প্লেক

1
git remote set-head origin -aকাজে আসতে পারে। এটি উত্সের ডিফল্ট শাখা সেট করে ( refs/remotes/origin/HEADযেমন এটি রিমোট রিপোজিটরিতে সেট করা আছে)। git cloneএটি স্বয়ংক্রিয়ভাবে করে না, বিপরীতে git remote add -f
প্লেক

211

@Andrew স্পষ্ট উত্তর দেওয়া হয়েছে এখানে । ডিরেক্টরিটি খালি না থাকলেও এটির মতো সহজ কাজ করে:

git init .
git remote add origin <repository-url>
git pull origin master

আমি নিশ্চিত হয়ে খুশি <repository-url>git remote add origin /path/to/existing/repo
হ'ল

60

আপনি রেপো ক্লোন করতে পেরেছেন তা নিশ্চিত হতে যে কোনও অস্থায়ী ডিরেক্টরিতে যান এবং সেখানে প্রকল্পটি ক্লোন করুন:

git clone ssh://user@host.com/home/user/private/repos/project_hub.git

এটি আপনার স্টাফিকে একটি project_hubডিরেক্টরিতে ক্লোন করবে ।

ক্লোনিং শেষ হয়ে গেলে আপনি এই ডিরেক্টরিটি যেখানেই চান সরিয়ে ফেলতে পারেন:

mv project_hub /path/to/new/location

এটি নিরাপদ এবং আশেপাশে কোনও যাদুবিদ্যার প্রয়োজন নেই।


9
এটি প্রাক-বিদ্যমান /path/to/new/locationডিরেক্টরিতে একটি উপ-ডিরেক্টরি তৈরি করবে যা অবশ্যই প্রশ্নের মূল বিষয় নয়।
পাভেল Šিমেরদা

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


48

ডু

git clone https://user@bitbucket.org/user/projectname.git .

ডিরেক্টরি অবশ্যই খালি থাকতে হবে


16

হুম ... $(pwd)আমার জন্য কাজ করে নিখুঁত বর্তমান পথ নির্দিষ্ট করে ।

git clone https://github.com/me/myproject.git $(pwd)

গিট সংস্করণ: 2.21.0


13

যদি বর্তমান ডিরেক্টরিটি খালি থাকে, তবে এটি কাজ করবে:

git clone <repository> foo; mv foo/* foo/.git* .; rmdir foo

1
আমার ক্ষেত্রে এটি '' এর কিছু ফাইল নিয়ে কাজ করেছিল। ডিরেক্টরি
ওএসডাভ

2
নোট করুন যে foo এর অধীনে ডিরেক্টরিতে যে কোনও ডটফাইল রয়েছে, যেমন। foo / bar / .foobar এই আদেশ দ্বারা সরানো হবে না। থেকে @phatblat উত্তর দেখার
কর্মদিবসের

11

ব্যবহারের আগে @ স্টিফেনডেলক্রিক্সের উত্তর ছাড়াও:

git clone git@github.com.user/my-project.git .

আপনার বর্তমান দির ব্যবহার করে খালি আছে তা নিশ্চিত করুন

ls -a

আজ এই সমস্যার মুখোমুখি। দেখা গেল যে ডিরেক্টরিতে আমি .git এবং .gitignore ফোল্ডারগুলি লুকিয়ে রেখেছিলাম যেখানে আমি সংগ্রহস্থলটি ক্লোন করার চেষ্টা করছিলাম। আমি যখন এই ফোল্ডারগুলি সরিয়ে ফেললাম তখন সবকিছু ঠিক আছে।
তমারা

খালি কারেন্ট ডিয়ারের কমান্ড কী হবে? আমি মনে করি যে এটি কেবল এটি যাচাইয়ের চেয়ে আরও কার্যকর হবে :)
পাই 6 কে

9

সমাধান: এই ক্ষেত্রে, সমাধানটি ব্যবহার করছিল dot, সুতরাং:rm -rf .* && git clone ssh://user@host.com/home/user/private/repos/project_hub.git .

rm -rf .* && বাদ দেওয়া যেতে পারে যদি আমরা নিশ্চিত যে ডিরেক্টরিটি খালি রয়েছে।

ক্রেডিটগুলিতে যান: নীচের মন্তব্যে @ জেমস ম্যাকলফ্লিন।


10
এটি অশুভ দেখাচ্ছে, যেহেতু। * পিতামাতার ডিরেক্টরি অন্তর্ভুক্ত রয়েছে! আমি: ~ / tmp / tmp / tmp $ ls -d .* . .. me: ~ / tmp / tmp / tmp $
stackunderflow

এটি কোনও সাহায্য করে না, কারণ আমার যে ডিরেক্টরিটিতে চেকআউট করতে হবে সেই ডিরেক্টরিতে আমার নির্ভরতা রয়েছে।
বি01

18
আমি নিশ্চিত না যে কোনও সত্যিকারের সতর্কতার চিহ্ন ছাড়া কোনও আর-এর উত্তরে আরএম -আরএফ (যে কোনও আকারে) লিখাই বুদ্ধিমানের কাজ। কিছু অনভিজ্ঞ ব্যবহারকারী এখানে "সবুজ চেক চিহ্ন" (সাধারণত সর্বোত্তম উত্তর) সন্ধান করতে আসতে পারে তবে এই আদেশটি কপি-পেস্ট করুন ... বর্তমান ডিরেক্টরিতে তার কঠোর পরিশ্রম রয়েছে। বিটিডাব্লু: rm -rf ./.*"নিরাপদ" যদি আপনি কেবল বর্তমান ডিয়ারের আওতায় লুকানো (ডট) ফাইল এবং ডিরেক্টরিগুলি সরিয়ে ফেলেন (ঠিক যেমন @ স্ট্যাকুন্ডফারফ্লো আমার আগে বলেছিলেন)। কিন্তু rm -rfঅনভিজ্ঞ ব্যবহারকারীদের জন্য একটি বিপজ্জনক কমান্ড তাই এটির সাথে সাবধানতা অবলম্বন করুন! শুধু আমার 2 সেন্ট।
অ্যান্ড্রু

1.7.1 এ কাজ করে ভিতরে কেবল ফোল্ডারটি .gitপরে ছিল git init(আমি এটি জানতাম)
ভ্লাদক্রাস

আপনার -rfসাধারণ ফাইলগুলি মুছতে হবে না । দয়া করে এই উত্তরটি মুছে ফেলা বা কমপক্ষে একটি আলাদা গ্রহণ করার বিষয়টি বিবেচনা করুন।
নবীন

6

@ GoZoner এর উত্তরে উন্নতি করা:

git clone <repository> foo; shopt -s dotglob nullglob; mv foo/* .; rmdir foo

শট কমান্ডটি এই এসও উত্তর থেকে নেওয়া হয়েছে এবং ডটফাইলস অন্তর্ভুক্ত করতে বাশের 'এমভি' কমান্ডের আচরণ পরিবর্তন করে, যা আপনাকে .git ডিরেক্টরি এবং অন্য কোনও লুকানো ফাইল অন্তর্ভুক্ত করতে হবে।

এছাড়াও মনে রাখবেন যে বর্তমান ডিরেক্টরি (।) খালি থাকলে এটি কেবল যেমন-তে কাজ করার গ্যারান্টিযুক্ত তবে এটি ক্লোন করা রেপোতে থাকা যে কোনও ফাইলের বর্তমান ডিরেক্টরিতে ফাইলের নাম একই না থাকলে এটি কাজ করবে। আপনি যদি বর্তমান ডিরেক্টরিটিতে কী যত্ন না করেন তবে আপনি 'এমভি' কমান্ড -f (ফোর্স) বিকল্পটি যুক্ত করতে পারেন।


6

আমারও একই চাহিদা ছিল। আমার ক্ষেত্রে আমার কাছে একটি স্ট্যান্ডার্ড ওয়েব ফোল্ডার ছিল যা একটি ওয়েব সার্ভার ইনস্টল দ্বারা তৈরি। এই দৃষ্টান্তের উদ্দেশ্যগুলির জন্য এটি বলা যাক

/server/webroot

এবং ওয়েবরুটে অন্যান্য স্ট্যান্ডার্ড ফাইল এবং ফোল্ডার রয়েছে। আমার রেপোতে সুনির্দিষ্ট সাইট নির্দিষ্ট ফাইল রয়েছে (এইচটিএমএল, জাভাস্ক্রিপ্ট, সিএফএমএল, ইত্যাদি)

আমাকে যা করতে হয়েছিল তা হ'ল:

cd /server/webroot

git init

git pull [url to my repo.git]

লক্ষ্য ফোল্ডারে গিট টিআইএন করার জন্য আপনাকে সতর্কতা অবলম্বন করা উচিত কারণ আপনি যদি দুটি জিনিসের একটিও না করেন তবে:

  1. আমার ক্ষেত্রে কোনও গিট ফাইল সম্পর্কে বার্তা দিয়ে গিট টান সহজেই ব্যর্থ হবে:

মারাত্মক: গিট সংগ্রহস্থল নয় (বা মূল ডিরেক্টরিগুলির কোনও): .git

  1. সেখানে যদি হয় আপনার ফোল্ডারে পিতা বা মাতা পাথ একটি .git ফাইল কোথাও আপনার টানা রেপো যে পিতা বা মাতা যে .git ফাইল থাকে তৈরি করা হবে। এটি আমার সাথে ঘটেছিল এবং আমি এতে অবাক হয়েছিলাম ;-)

এটি আমার ওয়েবরূট ফোল্ডারে আমার থাকা "স্ট্যান্ডার্ড" ফাইলগুলির কোনওরই বিরক্ত করতে পারে নি তবে পরবর্তীকালে অজান্তে যুক্ত হওয়া রোধ করার জন্য আমার সেগুলিকে .gitignore ফাইলটিতে যুক্ত করা দরকার ছিল to

এটি খালি খালি ডিরেক্টরিতে "ক্লোন" করার সহজ উপায় বলে মনে হচ্ছে। আপনি যদি টান দিয়ে তৈরি .git এবং .gitignore ফাইলগুলি না চান, কেবল টানার পরে এগুলি মুছুন।


5

@ ফটব্লাত এর উত্তরে আরও উন্নতি :

git clone --no-checkout <repository> tmp \
  && mv tmp/.git . \
  && rmdir tmp \
  && git checkout master

এক লাইনার হিসাবে:

git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master


2
shopt -s dotglob
git clone ssh://user@host.com/home/user/private/repos/project_hub.git tmp && mv tmp/* . && rm -rf tmp

3
আপনার কোডটি কেন সমস্যার সমাধান করে এবং এটি কী করে তা ব্যাখ্যা করার জন্য আরও তথ্য সরবরাহ করুন।
মার্টিন

"গিট ক্লোন ... টিএমপি" - কমান্ড কার্যকর করা হয় এমন ডিরেক্টরিতে / টিএমপি ফোল্ডার তৈরি করে এবং গিট সংগ্রহস্থলটিকে ক্লোন করে। তারপরে "এমভি টিএমপি / *"। - সমস্ত ফাইলকে / টিএমপি ফোল্ডার থেকে প্যারেন্ট ফোল্ডারে (যেখানে পূর্ববর্তী কমান্ডটি কার্যকর করা হয়েছে) থেকে সরানো হয় এবং শেষ পর্যন্ত "rm -rf tmp" - মুছে ফেলা / tmp ফোল্ডার।
মেরিনস্কি

1

নীচের মত আপনার কমান্ডের শেষে। (ডট) ব্যবহার করুন

গিট ক্লোন ইউআরএল


এটি ম্যাকের জন্য কাজ করে না, এটি ত্রুটির কারণ ঘটায়: fatal: destination path '.' already exists and is not an empty directory.
পেড্রো লুজ

Mac এর জন্য :: আপনি পেরেন্ট ডাইরেক্টরি অধীনে এবং তারপর পরিবর্তে নাম ফোল্ডারের ব্যবহার করা উচিত। (DOT) নিচের মত Git ক্লোন URL টি flodername নিশ্চিত করুন যে আপনার ফোল্ডারটি খালি তা নিশ্চিত করুন।
উপেন্দ্র

0

আমি যা পেয়েছি তা এখানে ছিল:

আমি এটা দেখি:

fatal: destination path 'CouchPotatoServer' already exists and is not an empty directory.

আমার অনুসন্ধানগুলির মধ্যে আমি হোঁচট খেয়েছি:

https://couchpota.to/forum/viewtopic.php?t=3943

ক্লিন্টন.এল দ্বারা প্রবেশের সন্ধান করুন ... আপনি যদি এটি চেষ্টা করেন (যেমন আমি করেছি) তবে আপনি সম্ভবত access deniedপ্রতিক্রিয়া পাবেন, আমার প্রথম সূত্রটি ছিল, সুতরাং প্রাথমিক ত্রুটি (আমার জন্য) আসলে ভুল রুটকে বাদ দিয়েছিল সমস্যা.

উইন্ডোজে এই জন্য সমাধান: আপনি চালাতে নিশ্চিত cmdবা git elevated, তারপর সঞ্চালন করুন:

git clone https://github.com/RuudBurger/CouchPotatoServer.git

উপরেরটি ছিল আমার সমস্যা এবং সহজভাবে আমার পক্ষে কাজ করেছিল।


0

সাথে সরানো হচ্ছে

আরএম-আরএফ। *

আপনাকে সমস্যায় ফেলতে পারে বা আরও কিছু ত্রুটি হতে পারে।

যদি আপনার কাছে / পাথ / থেকে / ফোল্ডার থাকে এবং আপনি ভিতরে সমস্ত কিছু সরিয়ে ফেলতে চান তবে সেই ফোল্ডারটি নয়, কেবল চালান:

আরএম-আরএফ / পাথ / টু / ফোল্ডার / *


0

সুতরাং আমি আমার মূল ডিরেক্টরিতে লুকানো .গিট ফোল্ডারটি মুছে ফেলা এবং তারপরে 'গিট ক্লোন রেপো'-তে একটি পিরিয়ড যুক্ত করে এই একই ত্রুটিটি ঠিক করেছি। আমার রুট / ডিস ফোল্ডারে এটি একটি ভ্যুই-ক্লিপ ওয়েবপ্যাক প্রকল্পের প্রসঙ্গে। সুতরাং অন্য সবাই যা বলছে তা সঠিক, এর অর্থ সাধারণত আপনি যে ফোল্ডারে ক্লোন করতে চেষ্টা করছেন বা প্যারেন্ট ফোল্ডারে বা প্রশ্নযুক্ত ফোল্ডারের মূলটিতে আপনি গিট ট্র্যাকিং করেছেন!


0

এর সমাধান Windowsহ'ল সংগ্রহস্থলটিকে অন্য ফোল্ডারে ক্লোন করা এবং তারপরে মূল স্থানে অনুলিপি করে আটকানো বা কেবল .gitঅদৃশ্য ফোল্ডারটি অনুলিপি করা ।


0
git clone ssh://user@host.com/home/user/private/repos/project_hub.git $(pwd)

নোট করুন যে এর পরেও প্রশ্নটিতে পোস্ট করা একই ত্রুটির পরিণতি ঘটবে (" মারাত্মক: গন্তব্য পথ 'সমাধান / পথ / এর / পিডাব্লুড' ইতিমধ্যে বিদ্যমান এবং এটি একটি খালি ডিরেক্টরি নয় " ") আপনি যদি শূন্যপদে এটি করে থাকেন তবে" ডিরেক্টরি।
জিনো মেম্পিন


-1

এটির মাধ্যমে একটি নতুন ফাইল তৈরি করা কার্যকর mkdir filename, তারপরে কমান্ড চালানো git clone xxxxx, এটি আমার কম্পিউটারে কাজ করে


-1

.gitপ্রদত্ত ডিরেক্টরিটির ডিরেক্টরি সহ কেবল সামগ্রী (বা সরান) মুছুন ।
অ্যান্ড্রয়েড স্টুডিওর মতো স্বয়ংক্রিয় সরঞ্জামগুলি Rebuildআপনার জন্য সমস্যাটি সমাধান করবে।

আরও বিশদ:
আমার জন্য প্রদর্শিত ত্রুটি দেখানো jarresolverগিট রেপো
পাথের জন্য ছিলtemp\jarresolver\

আমি কেবল temp\jarresolver\লুকানো .gitডিরেক্টরি সহ ডিরেক্টরিতে থাকা সামগ্রীগুলি মুছলাম ।

এগুলিই, সমস্ত কাজ করেছে, কোনও ক্লোনিংয়ের প্রয়োজন নেই।
যখন আমি করেছি Rebuild, অ্যান্ড্রয়েড স্টুডিও নিজেই ক্লোন হয়ে গেছে এবং বিল্ডটি সফল হয়েছিল।


-2

আমি এই প্রশ্নটি বহুবার দেখেছি - এবং আমি কেবল git pullএটিই নির্দেশ করতে চাই যে আপনার ডিরেক্টরি থেকে কৌশলটি কাজ করবে।

আমি যদি এখানে কিছু মিস না করি - তবে এটি আমার জন্য কাজ করেছিল।


4
git pullআপনার কাছে কোনও ডিপোজিটরি সংজ্ঞায়িত না করলে কিছুই করবে না যা git cloneএটির একটি সমালোচনামূলক অংশ part
হ্যাকেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.