একটি সাধারণ গিট সংগ্রহস্থলকে একটি খালি জায়গায় কীভাবে রূপান্তর করবেন?


601

আমি কীভাবে একটি 'সাধারণ' গিট সংগ্রহস্থলকে খালি জায়গায় রূপান্তর করতে পারি?

মূল পার্থক্যটি মনে হয়:

  • সাধারণ গিট রিপোজিটরিতে, আপনার সংগ্রহস্থলের .gitভিতরে একটি ফোল্ডার থাকে যা সম্পর্কিত সমস্ত তথ্য এবং অন্য সমস্ত ফাইল আপনার কার্যকরী অনুলিপি তৈরি করে

  • খালি গিট সংগ্রহস্থলগুলিতে, কোনও কার্যকরী অনুলিপি নেই এবং ফোল্ডারে (আসুন আমরা এটি কল করি repo.git) প্রকৃত সংগ্রহশালার ডেটা থাকে


16
সম্ভবত এটি একটি সংক্ষিপ্ত পদ্ধতি:mv repo/.git repo.git; rm -rf repo
জামেশফিশার

হ্যা, সত্য. আমি যখন প্রশ্নটি লিখেছিলাম, এটি ছিল আমার ইতিহাসের স্নিপেট, আমি অন্য মিনিটটি কার্যকর করেছিলাম।
বোল্ডউইন

54
@eegg ব্যবহারের &&পরিবর্তে ;ক্ষেত্রে mvব্যর্থ!

উত্তর:


608

সংক্ষেপে: এর বিষয়বস্তুগুলির বিষয়বস্তুগুলির repoসাথে প্রতিস্থাপন করুন repo/.git, তারপরে সংগ্রহস্থলটিকে বলুন যে এটি এখন একটি খালি সংগ্রহস্থল।

এটি করতে, নিম্নলিখিত কমান্ডগুলি কার্যকর করুন:

cd repo
mv .git ../repo.git # renaming just for clarity
cd ..
rm -fr repo
cd repo.git
git config --bool core.bare true

মনে রাখবেন যে এটি git clone --bareএকটি নতুন স্থানে করা থেকে আলাদা (নীচে দেখুন)।


9
ইঙ্গিত দেওয়ার জন্য ধন্যবাদ core.bare। এখন, এই বিকল্পটি গুগল করার
বোল্ডউইন

14
ধন্যবাদ! এটি আমার কাছে আরও পরিস্কার বলে মনে হচ্ছে: এমভি রেপো / .git রেপো.git && rm -rf রেপো && সিডি repo.git && গিট কনফিগারেশন --bbore core.bare সত্য
জেসনওয়ুফ

56
এটি নীচের উত্তরের ( git clone --bare /path/to/repo) এর চেয়ে অনেক জটিল এবং ভঙ্গুর ।
ডিজেডি

7
ডট-ফাইল এবং ডট ডিরেক্টরি মুছে ফেলার পরিবর্তে এই rmকমান্ডটির প্রয়োজন হতে পারে । * \.[!.]**
মিনিপ্রেট

6
@ সায়েন্টিক: আবারও আমি উপরের মন্তব্যে যেমনটি ইতিমধ্যে ব্যাখ্যা করেছি, আমার উত্তর 3 বছর আগে দেওয়া হয়েছিল, কিন্তু 5 মাস আগে কেউ প্রশ্নটিকে সম্পূর্ণ আলাদা কিছুতে সম্পাদনা করেছিল । কোনটি এই পৃষ্ঠাতে উত্তর করতে হবে কোন আর অর্থে। আদেশের ক্রমটি প্রশ্নটি থেকে সরাসরি অনুলিপি করা হয়েছিল, আমি কেবল শেষ দুটি লাইন যুক্ত করেছি।
Jörg ডব্লু মিট্টাগ

244

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

git clone --bare /path/to/repo

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


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

26
তবে আপনি কনফিগার ফাইলটির সংশ্লিষ্ট অংশগুলি অনুলিপি করে কনফিগার বিকল্পগুলি সহজেই স্থানান্তর করতে পারেন। আমি নিজে এই ফাইলটিকে অনুলিপি করা ও নামকরণের চেয়ে এই পদ্ধতিটিকে আরও পরিষ্কার মনে করব।
ফিলিপ

6
গিট-এসএনএন - - বারের জন্য সমর্থন না থাকার কারণে এটি একটি সাবস্ট্রেশন মাইগ্রেশনের পরে উপযুক্ত।
কিও

11
নামের দ্বন্দ্ব এড়াতে ---git clone --bare /path/to/repo.git /path/to/newbarerepo.git
রকস্জা

এটি যতক্ষণ না আপনি git update-server-infoসৃষ্টির পরে খালি রেপোতে চালাবেন ততক্ষণ কাজ করে।
ACK_stoverflow

116

আমি মনে করি যে নীচের লিঙ্কটি সহায়ক হবে

গিটফাক: আমি কীভাবে বিদ্যমান নন-বেয়ার স্টোরগুলি খালি করব?

$ mv repo/.git repo.git
$ git --git-dir=repo.git config core.bare true
$ rm -rf repo

2
হ্যাঁ, আমি যা অনুসন্ধান করেছি তা-ই, ধন্যবাদ! যাইহোক, তাদের দ্বিতীয় প্রস্তাব ( git clone) এর উপরে উল্লিখিত নোসাতালিয়ানগুলির মধ্যে রয়েছে এমন ত্রুটিগুলি রয়েছে।
বোল্ডউইন

1
আপনি যে ডকুমেন্টেশনের পরামর্শ দিয়েছেন তাতে আরও বলা হয়েছে, "একটি নিরাপদ পদ্ধতি হ'ল গিটকে এই জাতীয় কিছু করে আপনার জন্য সমস্ত অভ্যন্তরীণ সেটিংস পরিচালনা করতে দেওয়া ... গিট ক্লোন - বিয়ার-এল <পাথ_ টো_রেপোস> <নতুন_ডায়ার"
ড্যাফঙ্কার

74

আপনি যদি বিশেষত ফাইল সিস্টেমে বিটগুলি বিচলিত করতে চান না বা প্রয়োজন না করেন তবে একটি নন-বেয়ার রিপোজিটরি (এখানে বেশ কয়েকটি অন্যান্য পোস্টে উল্লিখিত) এর একটি খালি সংস্করণ তৈরি করা সত্যিই মৃত। এটি গিটের মূল কার্যকারিতার অংশ:

git clone --bare existing_repo_path bare_repo_path


6
আশ্চর্যজনক যে দুর-দুরের সেরা উত্তরের 4 মাস পরে 0 টি ভোট রয়েছে। খুব-ভাল-তবে-বিপজ্জনক নয় 'গ্রহণযোগ্য উত্তর' এর 200 টি রয়েছে!
স্টেলেডোগ

36
মোটেও আশ্চর্যজনক নয় - এই উত্তরটি মূল প্রশ্নটি যা বলেছিল তা করে না। এটি কোনও রেপো রূপান্তর করে না, এটি ক্লোন করে, প্রক্রিয়ায় তথ্য হারাতে (উদাহরণস্বরূপ, দূরবর্তী শাখা)।
গ্রিনএজজেড

15

দয়া করে ব্যবহার বিবেচনা করুন

git clone --mirror path_to_source_repository

ডকুমেন্টেশন থেকে :

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


এর মতো মনে হচ্ছে ওপি যা চায় তা করার সর্বাধিক সংক্ষিপ্ত, সম্পূর্ণ এবং নিরাপদ উপায় (কেবলমাত্র বনাম clone)। আমি কিছু অনুপস্থিত করছি? ছিল --mirrorএকটি অপেক্ষাকৃত সাম্প্রতিক উপরন্তু?
ক্রেগ সিলভার

@ ক্রেইগসিলভার: না, যেমনটি আমি ডকুমেন্টেশনের ইতিহাসে দেখি যেমন একটি ফর্মটি --mirror1.7 সংস্করণ থেকে পাওয়া যায়, তাই ইতিমধ্যে বেশ দীর্ঘ। আপনি এখানে
Jacek Krawczyk

7

আমি কেবল একটি নেটওয়ার্কের পাথের একটি সংগ্রহস্থলের দিকে এগিয়ে যেতে চেয়েছিলাম কিন্তু g সংগ্রহস্থলটি খালি হিসাবে চিহ্নিত না করা হলে গিট আমাকে তা করতে দেয় না। আমার যা দরকার তা হ'ল এর কনফিগারটি পরিবর্তন করা:

git config --bool core.bare true

আপনি এটিকে পরিষ্কার রাখতে না চাইলে ফাইলগুলিতে ঝাঁকুনির দরকার নেই।


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

সত্য, আপনার রিমোট বেয়ার রেপুর গাছে কাজ করা উচিত নয়।
স্লিয়ন

6

আমি উত্তরগুলি পড়েছি এবং আমি এটি করেছি:

cd repos
mv .git repos.git
cd repos.git
git config --bool core.bare true # from another answer
cd ../
mv repos.git ../
cd ../
rm -rf repos/ # or delete using a file manager if you like

repos/.gitএটি খালি হিসাবে বিষয়বস্তু ছেড়ে যাবেrepos.git


4

আমি এখানে সবচেয়ে নিরাপদ এবং সহজ বলে মনে করি। এখানে উপরে বর্ণিত কিছু নেই। আমি কেবল একটি উত্তর দেখতে চাই যা একটি নিরাপদ পদক্ষেপে পদক্ষেপ প্রক্রিয়া দেখায়। আপনি খালি তৈরি করতে চান এমন সংগ্রহস্থল (রেপো) থেকে একটি ফোল্ডার শুরু করুন। আমি উপরে উল্লিখিত কনভেনশনটি গ্রহণ করেছি যে খালি সংগ্রহস্থল ফোল্ডারগুলির একটি .git এক্সটেনশন রয়েছে।

(1) Backup, just in case.
    (a) > mkdir backup
    (b) > cd backup
    (c) > git clone ../repo
(2) Make it bare, then move it
    (a) > cd ../repo
    (b) > git config --bool core.bare true
    (c) > mv .git ../repo.git
(3) Confirm the bare repository works (optional, since we have a backup)
    (a) > cd ..
    (b) > mkdir test
    (c) > cd test
    (d) > git clone ../repo.git
(4) Clean up
    (a) > rm -Rf repo
    (b) (optional) > rm -Rf backup/repo
    (c) (optional) > rm -Rf test/repo

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

উল্লেখযোগ্য। আমি কেবলমাত্র কনফিগারেশনগুলির যত্ন নিয়েছি তা আমার সমস্ত স্থানীয় সংগ্রহস্থলের কাছে বৈশ্বিক।
sdesज्ञानlover

4

সহজভাবে পড়া

প্রো গিট বুক: সার্ভারে 4.2 গিট - একটি সার্ভারে গিট পাওয়া

যা উত্সাহিত

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

তারপরে সার্ভারে my_project.git রাখুন

যা মূলত, কোন উত্তর # 42 উল্লেখ করার চেষ্টা করেছিল। খুব কমই একজন চাকা পুনরুদ্ধার করতে পারে ;-)


আমি দেখতে, কি এই উত্তরটি যোগ করে, যে অবাধ দৈর্ঘ্য আলোচনা করা হয়েছে ব্যর্থ কোনো অন্য উত্তরের কাছাকাছি (তত্সহ downvoted)। তুমি কি পরিষ্কার করে বলতে পারো? (উপায়ে: প্রো গিট বুক বলেছে যে এটি "এর মতো
কিছুটার

3

এখানে একটি ইউএএনএক্স ভিত্তিক সিস্টেমে আপনি আপনার .bashrc বা। প্রোফাইলে যুক্ত করতে পারেন একটি সামান্য বেস বেস ফাংশন। একবার যুক্ত এবং শেল পারেন পুনরায় আরম্ভ করা হয় বা ফাইলের একটি কলের মাধ্যমে পুনরায় লোড করা হয় source ~/.profileবা source ~/.bashrc

function gitToBare() {
  if [ -d ".git" ]; then
    DIR="`pwd`"
    mv .git ..
    rm -fr *
    mv ../.git .
    mv .git/* .
    rmdir .git

    git config --bool core.bare true
    cd ..
    mv "${DIR}" "${DIR}.git"

    printf "[\x1b[32mSUCCESS\x1b[0m] Git repository converted to "
    printf "bare and renamed to\n  ${DIR}.git\n"
    cd "${DIR}.git"
  else
    printf "[\x1b[31mFAILURE\x1b[0m] Cannot find a .git directory\n"
  fi
}

একবার .git ডিরেক্টরিযুক্ত ডিরেক্টরিতে ডেকে আনা হলে, এটি সংগ্রহস্থলকে রূপান্তর করতে যথাযথ পরিবর্তন করতে পারে। কল করার সময় যদি কোন .git ডিরেক্টরি উপস্থিত না থাকে তবে একটি ব্যর্থ বার্তা উপস্থিত হবে এবং কোনও ফাইল সিস্টেমের পরিবর্তন ঘটবে না।


1

.Git ডিরেক্টরিটি সরানোর সাথে সাথে ফাইলগুলি মুছে ফেলা এবং ম্যাক করতে বলার পদ্ধতিগুলি পরিষ্কার নয় এবং সহজ কিছু হওয়া উচিত এমন কিছু করার জন্য "গিট" পদ্ধতিটি ব্যবহার করছেন না। সাধারণ রেপোকে খালি রেপোতে রূপান্তর করার জন্য এটি খুঁজে পাওয়া সবচেয়ে পরিষ্কার পদ্ধতি।

প্রথম ক্লোন / পাথ / থেকে / সাধারণ / রেপো একটি বেয়ার রেপোতে রেপো.git নামে পরিচিত

git clone --bare /path/to/normal/repo

এরপরে মূল / পথ / থেকে / স্বাভাবিক / রেপোতে নির্দেশিত উত্সটি সরান

cd repo.git
git remote rm origin

অবশেষে আপনি আপনার মূল রেপো সরাতে পারেন। আপনি সেই সময়ে রেপোতে নাম পরিবর্তন করতে পারেন, তবে গিট সংগ্রহস্থলকে বোঝানোর জন্য আদর্শ কনভেনশনটি কিছু.g.git, তাই আমি ব্যক্তিগতভাবে এটিকে ছেড়ে চলে যেতে পারি।

একবার আপনি সমস্ত কিছু সম্পন্ন করার পরে, আপনি আপনার নতুন বেয়ার রেপো ক্লোন করতে পারেন (যা ফলস্বরূপ একটি সাধারণ রেপো তৈরি করে, এবং এটি কীভাবে আপনি একে একে খালি থেকে সাধারণ রূপান্তর করবেন)

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


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

1

আপনার যদি কয়েকটি স্থানীয় চেকআউট শাখা / রেফ / মাথা / * এবং কয়েকটি দূরবর্তী শাখা শাখা প্রত্যাসঙ্গ / উত্স / * এর সাথে একটি ভান্ডার রয়েছে এবং আপনি যদি এটিকে / রেফ / হেড / * তে সমস্ত শাখার সাথে একটি বেয়ার সংগ্রহস্থলে রূপান্তর করতে চান

ইতিহাস সংরক্ষণ করতে আপনি নিম্নলিখিতটি করতে পারেন।

  1. একটি খালি সংগ্রহস্থল তৈরি করুন
  2. স্থানীয় সংগ্রহস্থলে সিডি করুন যার স্থানীয় চেকআউট শাখা এবং দূরবর্তী শাখা রয়েছে
  3. গিট পুশ / পাথ / টু / বেয়ার / রেপো + রেফস / রিমোটস / উত্স / : রেফ / হেড /

0

আমি নীচের স্ক্রিপ্টটি একটি টেক্সট ফাইলটি পড়তে ব্যবহার করেছি যাতে আমার সমস্ত এসভিএন রেপোগুলির একটি তালিকা থাকে এবং সেগুলি জিআইটিতে রূপান্তর করে, এবং পরে গিট ক্লোন ব্যবহার করে - খালি গিট রেপোতে রূপান্তর করতে

#!/bin/bash
file="list.txt"
while IFS= read -r repo_name
do
 printf '%s\n' "$repo_name"
 sudo git svn clone --shared --preserve-empty-dirs --authors-file=users.txt file:///programs/svn/$repo_name 
 sudo git clone --bare /programs/git/$repo_name $repo_name.git
 sudo chown -R www-data:www-data $repo_name.git
 sudo rm -rf $repo_name
done <"$file"

list.txt এর ফর্ম্যাট আছে

repo1_name
repo2_name

এবং users.txt এর ফর্ম্যাট রয়েছে

(no author) = Prince Rogers <prince.rogers.nelson@payesley.park.org>

www-data হ'ল অ্যাপাচি ওয়েব সার্ভার ব্যবহারকারী, এইচটিটিপি-র পরিবর্তনের জন্য অনুমতি প্রয়োজন


0

এখানে gitglossary থেকে একটি খালি ভাণ্ডার সংজ্ঞা :

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

আমি এখানে পৌঁছেছি কারণ আমি একটি "স্থানীয় সংগ্রহস্থল" নিয়ে ঘুরে বেড়াচ্ছিলাম এবং আমি যা খুশি তাই করতে সক্ষম হচ্ছিলাম যেন এটি একটি দূরবর্তী সংগ্রহস্থল it আমি কেবল চারপাশে খেলছিলাম, গিট সম্পর্কে জানার চেষ্টা করছিলাম। আমি ধরে নেব যে এই উত্তরটি যে পড়তে চায় তার পক্ষে এই অবস্থা।

আমি একটি বিশেষজ্ঞ মতামত বা কিছু নির্দিষ্ট পাল্টা উদাহরণের জন্য চাই তবে এটা মনে হচ্ছে যে কেবল ফাইল যাচ্ছে (যে আমি দেখেছি কিছু Git সোর্স কোড মাধ্যমে rummaging পরে) .git/configএবং সেটিং কোর এট্রিবিউট বেয়ার করার সত্য , Git আপনাকে যা করতে দেওয়া হবে যাই হোক না কেন আপনি সংগ্রহস্থল থেকে দূরবর্তীভাবে করতে চান। অর্থাৎ নিম্নলিখিত লাইনগুলি উপস্থিত থাকতে হবে .git/config:

[core]
    ...
    bare = true
...

(কমান্ডটি প্রায় এটিই git config --bool core.bare trueকরবে যা সম্ভবত আরও জটিল পরিস্থিতি মোকাবেলা করার পরামর্শ দেওয়া হয়)

এই দাবির পক্ষে আমার সমর্থনযোগ্যতা হ'ল, গিট সোর্স কোডে, রেপো খালি বা না থাকলে পরীক্ষার দুটি ভিন্ন উপায় বলে মনে হয়। একটি হ'ল গ্লোবাল ভেরিয়েবল পরীক্ষা করে is_bare_repository_cfg। এটি কার্যকর করার কয়েকটি সেটআপ পর্বের সময় সেট করা থাকে এবং .git/configফাইলটিতে পাওয়া মান প্রতিফলিত করে । অন্যটি একটি ফাংশন is_bare_repository()। এখানে এই ফাংশন সংজ্ঞা:

int is_bare_repository(void)
{
    /* if core.bare is not 'false', let's see if there is a work tree */
    return is_bare_repository_cfg && !get_git_work_tree();
} 

আমি সময় কিংবা দক্ষতার পরম আত্মবিশ্বাসের সঙ্গে বলতে না করেছি, কিন্তু যতদূর আমি বলতে পারতাম হিসাবে আপনি আছে যদি bareকরতে অ্যাট্রিবিউট সেট trueমধ্যে .git/config, এই সবসময় ফেরত পাঠাবেন 1। বাকি কাজটি সম্ভবত নিম্নলিখিত পরিস্থিতির জন্য:

  1. কোর.বেয়ার অপরিজ্ঞাত (যেমন সত্য বা মিথ্যা নয়)
  2. কোনও ওয়ার্ক্রি নেই (যেমন .git উপ-ডিরেক্টরিটি মূল ডিরেক্টরি)

আমি পরে যখন এটি করতে পারি তখন এটি ব্যবহার করব, তবে এটির মাধ্যমে মনে হবে যে কোর.বারে = সত্য নির্ধারণ করা কনফিগার ফাইল থেকে কোর.বারে অপসারণ এবং ডিরেক্টরিগুলি সঠিকভাবে সেট আপ করার সমতুল্য ।

যে কোনও হারে, কোর.বারে = সত্য নির্ধারণ করা আপনাকে অবশ্যই এটির দিকে চাপ দিতে দেবে, তবে আমি নিশ্চিত নই যে প্রকল্পের ফাইলগুলির উপস্থিতি অন্য কিছু ক্রিয়াকলাপকে খারাপ করে দেবে কিনা। এটি আকর্ষণীয় এবং আমি মনে করি সংরক্ষণাগারটিতে চাপ দেওয়া এবং স্থানীয়ভাবে কী ঘটেছিল তা দেখতে (যেমন চালানো git statusএবং ফলাফলগুলি বোঝার জন্য) শিক্ষণীয় supp


-1

প্রথমত, backupআপনার বিদ্যমান রেপো:

(a)  mkdir backup

(b)  cd backup

(c)  git clone non_bare_repo

দ্বিতীয়ত: নিম্নলিখিতগুলি চালান:

git clone --bare -l non_bare_repo new_bare_repo

মধ্যবর্তী ক্লোন কি জন্য?
স্টেলেডোগ

-4

উপরোক্ত সমস্ত ক্রিয়াকলাপ করার জন্য অনেলাইনার:

for i in `ls -A .`; do if [ $i != ".git" ]; then rm -rf $i; fi; done; mv .git/* .; rm -rf .git; git config --bool core.bare true

(যদি কিছু আপ ফুরিয়ে যায় এবং আপনার ব্যাকআপ না থাকে তবে আমাকে দোষ দেবেন না: পি)


-9

বাহ, এটি কেবল আশ্চর্যজনক যে কতজন লোক এতে চিত্তাকর্ষক হয়েছিল, বিশেষত এটি বিবেচনা করে দেখে মনে হয় না যে এই ব্যক্তি কেন তিনি করছেন তা কেন জিজ্ঞাসা করতে একজনই থামেনি।

খালি এবং নন-বেয়ার গিট সংগ্রহস্থলের মধ্যে কেবলমাত্র পার্থক্য হ'ল নন-বেয়ার সংস্করণটির একটি কার্যকরী অনুলিপি রয়েছে। আপনার খালি রেপো লাগার মূল কারণ হ'ল আপনি যদি এটি কোনও তৃতীয় পক্ষের কাছে উপলব্ধ করতে চান তবে আপনি সরাসরি এটিতে সরাসরি কাজ করতে পারবেন না এমন কোনও পর্যায়ে আপনি এটি ক্লোন করতে চলেছেন আপনি যে পর্যায়ে এসেছেন you're ঠিক নিয়মিত ওয়ার্কিং কপির সংস্করণে ফিরে আসুন।

বলা হচ্ছে, খালি রেপোতে রূপান্তর করার জন্য আপনাকে যা করতে হবে তা নিশ্চিত করা আপনার কোনও কমান্ড বিচারাধীন নেই এবং ঠিক ঠিক:

rm -R * && mv .git/* . && rm -R .git

তুই যা, খালি রেপো।


11
এটি এটি যথেষ্ট খালি করে না। এটিতে চাপ দেওয়ার চেষ্টা করুন। আপনার git config core.bare trueপাশাপাশি করাও দরকার।
অ্যান্টনি হ্যাচকিন্স

আমি ডাউনভিট করি নি, তবে আমি কেবল উল্লেখ করতে চেয়েছিলাম যে এই উত্তরের প্রথম অংশে এটি ব্যাখ্যা করে যে আপনি কেন একটি খালি রেপ বনাম একটি খালি রেপো চান তা ঠিক আছে , যদিও এতে পর্যাপ্ত প্রযুক্তিগত বিবরণ নেই, এবং হতে পারে কিছুটা ভুল হতে হবে। যাইহোক , আপনার উত্তরের ২ য় অংশের জন্য, যখন এই আদেশগুলি আপনার রেপো খালি রাখার জন্য সেট আপ করে, অ্যান্টনি ঠিক আছে , আপনাকে এখনও এই উত্তরটিরgit config core.bare true মতো সেট করা দরকার ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.