সমাধান 3
এটি একাধিক প্রকল্পের জন্য একটি একক ডিরেক্টরি ব্যবহার করার জন্য। আমি এই কৌশলটি কিছু ঘনিষ্ঠভাবে সম্পর্কিত প্রকল্পগুলির জন্য ব্যবহার করি যেখানে আমার প্রায়শই একটি প্রকল্প থেকে অন্য প্রকল্পে পরিবর্তন আনতে হয়। এটি অনাথ শাখাগুলির ধারণার মতো তবে শাখাগুলি এতিম হওয়ার দরকার নেই। কেবল একই প্রকল্পের খালি ডিরেক্টরি রাজ্য থেকে সমস্ত প্রকল্প শুরু করুন।
একটি প্রতিশ্রুতিবদ্ধ খালি ডিরেক্টরি থেকে সমস্ত প্রকল্প শুরু করুন
এই সমাধান থেকে আশ্চর্য আশা করবেন না। আমি এটি দেখতে পেয়েছি, আপনার সবসময় অনন্যাকড ফাইলগুলির সাথে বিরক্তি থাকতে চলেছে। তাদের সাথে কী করণীয় সে সম্পর্কে গিটের আসলেই কোনও ইঙ্গিত নেই এবং তাই যদি কোনও সংকলক দ্বারা তৈরি করা এবং আপনার .gitignore ফাইল দ্বারা উপেক্ষা করা হয় তবে যদি আপনি দ্রুত অদলবদল করার চেষ্টা করেন তবে সম্ভবত সেগুলি কিছু সময় ঝুলতে থাকবে likely - উদাহরণস্বরূপ - আপনার সফ্টওয়্যার প্রকল্প এবং একটি পিএইচডি থিসিস প্রকল্প।
তবে এখানে পরিকল্পনা। খালি ভাণ্ডার প্রতিশ্রুতিবদ্ধ করে আপনার কোনও গিট প্রকল্প শুরু করা উচিত হিসাবে শুরু করুন এবং তারপরে আপনার সমস্ত প্রকল্প একই ফাঁকা ডিরেক্টরি রাজ্য থেকে শুরু করুন। এইভাবে আপনি নিশ্চিত যে দুটি প্রচুর ফাইল মোটামুটি স্বতন্ত্র। এছাড়াও, আপনার শাখাগুলি একটি যথাযথ নাম দিন এবং আলস্যভাবে কেবল "মাস্টার" ব্যবহার করবেন না। আপনার প্রকল্পগুলি পৃথক হওয়া দরকার তাই তাদের উপযুক্ত নাম দিন give
গিট কমিট করে (এবং তাই ট্যাগ এবং শাখা) মূলত একটি ডিরেক্টরি এবং এর উপ-ডিরেক্টরিগুলির স্থিতি সংরক্ষণ করে এবং গিটের ধারণা নেই যে এগুলি একই বা বিভিন্ন প্রকল্পের অংশ কিনা তাই সত্যই একই সংগ্রহস্থলের বিভিন্ন প্রকল্প সংরক্ষণ করার জন্য গিটের সমস্যা নেই। সমস্যাটি হ'ল অন্য প্রকল্পটি ব্যবহার করার সময় আপনি যদি কোনও প্রকল্প থেকে অপ্রকাশিত ফাইলগুলি সাফ করা বা পরে প্রকল্পগুলি পৃথক করে তোলা হয় for
একটি খালি সংগ্রহস্থল তৈরি করুন
cd some_empty_directory
git init
touch .gitignore
git add .gitignore
git commit -m empty
git tag EMPTY
আপনার প্রকল্পগুলি খালি থেকে শুরু করুন।
একটি প্রকল্পে কাজ।
git branch software EMPTY
git checkout software
echo "array board[8,8] of piece" > chess.prog
git add chess.prog
git commit -m "chess program"
আর একটি প্রকল্প শুরু করুন
যখন তুমি চাও.
git branch thesis EMPTY
git checkout thesis
echo "the meaning of meaning" > philosophy_doctorate.txt
git add philosophy_doctorate.txt
git commit -m "Ph.D"
পিছনে পিছনে স্যুইচ করুন
আপনি যখনই চান প্রকল্পগুলির মধ্যে পিছনে এবং এগিয়ে যান। এই উদাহরণটি দাবা সফ্টওয়্যার প্রকল্পে ফিরে যায়।
git checkout software
echo "while not end_of_game do make_move()" >> chess.prog
git add chess.prog
git commit -m "improved chess program"
বিরতিহীন ফাইলগুলি বিরক্তিকর
প্রকল্পগুলি / শাখাগুলির মধ্যে অদলবদল করার সময় আপনি অনতিযুক্ত ফাইলগুলি দ্বারা বিরক্ত হবেন।
touch untracked_software_file.prog
git checkout thesis
ls
philosophy_doctorate.txt untracked_software_file.prog
এটি কোনও দুর্গম সমস্যা নয়
সংজ্ঞায়িত অনুসারে বাছাই করুন, গিটটি সত্যিই জানে না যে তালাবিহীন ফাইলগুলি কী করবে এবং সেগুলি মোকাবেলা করা আপনার পক্ষে up আপনি নিম্নরোগযুক্ত ফাইলগুলি নীচে একটি শাখা থেকে অন্য শাখায় নিয়ে যাওয়া থেকে বিরত রাখতে পারেন।
git checkout EMPTY
ls
untracked_software_file.prog
rm -r *
(directory is now really empty, apart from the repository stuff!)
git checkout thesis
ls
philosophy_doctorate.txt
আমাদের নতুন প্রকল্পটি যাচাই করার আগে ডিরেক্টরিটি ফাঁকা ছিল তা নিশ্চিত করে আমরা নিশ্চিত করেছিলাম যে অন্য কোনও প্রকল্পের কোনও হ্যাং অন্রে্যাকড ফাইল নেই।
একটি পরিমার্জন
$ GIT_AUTHOR_DATE='2001-01-01:T01:01:01' GIT_COMMITTER_DATE='2001-01-01T01:01:01' git commit -m empty
যদি কোনও খালি ভাণ্ডার প্রতিশ্রুতিবদ্ধ যখন একই তারিখগুলি নির্দিষ্ট করা থাকে তবে স্বতন্ত্রভাবে নির্মিত খালি সংগ্রহস্থলের কমিটগুলিতে একই SHA1 কোড থাকতে পারে। এটি দুটি সংগ্রহস্থল স্বাধীনভাবে তৈরি করতে দেয় এবং তারপরে পরে একটি সংগ্রহস্থলের একটি সাধারণ মূলের সাথে একত্রে একটি গাছে একত্রিত হয়।
উদাহরণ
# Create thesis repository.
# Merge existing chess repository branch into it
mkdir single_repo_for_thesis_and_chess
cd single_repo_for_thesis_and_chess
git init
touch .gitignore
git add .gitignore
GIT_AUTHOR_DATE='2001-01-01:T01:01:01' GIT_COMMITTER_DATE='2001-01-01:T01:01:01' git commit -m empty
git tag EMPTY
echo "the meaning of meaning" > thesis.txt
git add thesis.txt
git commit -m "Wrote my PH.D"
git branch -m master thesis
# It's as simple as this ...
git remote add chess ../chessrepository/.git
git fetch chess chess:chess
ফলাফল

প্রতি প্রকল্পের সাব-ডিরেক্টরি ব্যবহার করবেন?
আপনার প্রকল্পগুলি যেখানে সম্ভব সেখানে সাব-ডাইরেক্টরিজগুলিতে রাখেন, যেমন ফাইল রাখার পরিবর্তে এটিও সহায়তা করতে পারে
chess.prog
philosophy_doctorate.txt
আছে
chess/chess.prog
thesis/philosophy_doctorate.txt
এক্ষেত্রে আপনার অচিহ্নযুক্ত সফ্টওয়্যার ফাইলটি হবে chess/untracked_software_file.prog। thesisডিরেক্টরিতে কাজ করার সময় আপনি আনট্র্যাকড দাবা প্রোগ্রাম ফাইলগুলি দ্বারা বিঘ্নিত হওয়া উচিত নয় এবং আপনি অন্যান্য প্রকল্পগুলি থেকে অপ্রকাশিত ফাইলগুলি মোছা না করে যখন আপনি সুখে কাজ করতে পারেন এমন উপলক্ষগুলি খুঁজে পেতে পারেন।
এছাড়াও, আপনি যদি অন্য প্রকল্পগুলি থেকে অপ্রকাশিত ফাইলগুলি মুছে ফেলতে চান, তবে প্রতিটি অপ্রয়োজনীয় ফাইলগুলি অপসারণের চেয়ে অযাচিত ডিরেক্টরি ডাম্প করার চেয়ে দ্রুত (এবং ত্রুটির প্রবণতা কম) হবে।
শাখার নামগুলিতে '/' অক্ষর অন্তর্ভুক্ত থাকতে পারে
সুতরাং আপনি নিজের শাখার নামটির মতো কিছু রাখতে চাইবেন
project1/master
project1/featureABC
project2/master
project2/featureXYZ