আমি যদি আপনার সমস্যাটি ভালভাবে বুঝতে পারি তবে আপনি নিম্নলিখিত জিনিসগুলি চান:
- আপনার মিডিয়া ফাইলগুলিকে একটি একক গিট সংগ্রহস্থলীতে সঞ্চিত করুন, যা অনেক প্রকল্পের দ্বারা ব্যবহৃত হয়
- আপনি যদি আপনার স্থানীয় মেশিনের যে কোনও প্রকল্পের মিডিয়া ফাইলটি পরিবর্তন করেন তবে তা অবিলম্বে প্রতিটি অন্যান্য প্রকল্পে উপস্থিত হওয়া উচিত (যাতে আপনি সর্বদা + পুশ + টানতে প্রতিশ্রুতি দিতে চান না)
দুর্ভাগ্যক্রমে আপনি যা চান তার চূড়ান্ত সমাধান নেই, তবে কিছু জিনিস রয়েছে যার দ্বারা আপনি আপনার জীবনকে সহজ করে তুলতে পারেন।
প্রথমে আপনার একটি গুরুত্বপূর্ণ বিষয় সিদ্ধান্ত নেওয়া উচিত: আপনি কি আপনার প্রকল্পের সংগ্রহস্থলের প্রতিটি সংস্করণে মিডিয়া ফাইলগুলির সংস্করণটির একটি রেফারেন্স সঞ্চয় করতে চান? সুতরাং উদাহরণস্বরূপ, যদি আপনার কাছে উদাহরণ.কম নামে একটি প্রকল্প রয়েছে, তবে আপনার কী জানা দরকার যে এটি 2 সপ্তাহ আগে কোন স্টাইল সিএসএস ব্যবহার করেছে বা সর্বশেষতমটি সর্বদা (বা বেশিরভাগ ক্ষেত্রে) সেরা?
আপনার যদি এটি জানার দরকার না হয় তবে সমাধানটি সহজ:
- মিডিয়া ফাইলগুলির জন্য এবং প্রতিটি প্রকল্পের জন্য একটি সংগ্রহস্থল তৈরি করুন
- আপনার প্রকল্পগুলিতে একটি প্রতীকী লিঙ্ক তৈরি করুন যা স্থানীয়ভাবে ক্লোন করা মিডিয়া ভান্ডারগুলিকে নির্দেশ করে। আপনি হয় তুলনামূলক প্রতীকী লিঙ্ক তৈরি করতে পারেন (যেমন ../media) এবং ধরে নিতে পারেন যে প্রত্যেকে প্রকল্পটি চেকআউট করবে যাতে মিডিয়া ডিরেক্টরি একই জায়গায় থাকে বা প্রতীকী লিঙ্কটির নাম .gitignore এ লিখতে পারে এবং প্রত্যেকে সিদ্ধান্ত নিতে পারে যেখানে সে মিডিয়া ফাইল রাখে।
তবে বেশিরভাগ ক্ষেত্রেই আপনি এই সংস্করণ তথ্যটি জানতে চান। এই ক্ষেত্রে আপনার দুটি পছন্দ আছে:
প্রতিটি প্রকল্পকে একটি বড় ভাণ্ডারে সংরক্ষণ করুন। এই সমাধানটির সুবিধাটি হ'ল আপনার কাছে মিডিয়া সংগ্রহস্থলের কেবল 1 টি অনুলিপি থাকবে। বড় অসুবিধাটি হ'ল প্রকল্পের সংস্করণগুলির মধ্যে স্যুইচ করা আরও কঠিন (
সাবমডিউলগুলি (উত্তর 1 তে বর্ণিত হিসাবে) ব্যবহার করুন। এইভাবে আপনি মিডিয়া ফাইলগুলি একটি সংগ্রহস্থলে সংরক্ষণ করবেন এবং প্রকল্পগুলিতে নির্দিষ্ট মিডিয়া রেপো সংস্করণে কেবলমাত্র একটি রেফারেন্স থাকবে। তবে এইভাবে আপনার কাছে সাধারণত মিডিয়া ভান্ডারগুলির অনেক স্থানীয় কপি থাকবে এবং আপনি সহজেই সমস্ত প্রকল্পে একটি মিডিয়া ফাইল পরিবর্তন করতে পারবেন না।
আমি যদি আপনি হতাম আমি সম্ভবত প্রথম বা তৃতীয় সমাধানটি বেছে নেব (প্রতীকী লিঙ্ক বা সাবমডিউলস)। আপনি যদি সাবমডিউলগুলি ব্যবহার করা চয়ন করেন তবে আপনার জীবন সহজ করার জন্য আপনি এখনও অনেক কিছু করতে পারেন:
প্রতিশ্রুতি দেওয়ার আগে আপনি সাবমডিউল ডিরেক্টরিটির নাম পরিবর্তন করতে পারেন এবং একটি সাধারণ মিডিয়া ডিরেক্টরিতে একটি সিমলিংক রাখতে পারেন। আপনি যখন প্রতিশ্রুতিবদ্ধ হতে প্রস্তুত হন, আপনি সিমলিংকটি সরিয়ে ফেলতে পারেন এবং সাবমডিউলটি ফিরিয়ে দিতে পারেন, এবং তারপরে প্রতিশ্রুতিবদ্ধ।
আপনি মিডিয়া ভান্ডারগুলির একটি অনুলিপি আপনার সমস্ত প্রকল্পের রিমোট রিপোজিটরি হিসাবে যুক্ত করতে পারেন।
আপনি স্থানীয় ডিরেক্টরিগুলি এভাবে দূরবর্তী হিসাবে যুক্ত করতে পারেন:
cd /my/project2/media
git remote add project1 /my/project1/media
যদি আপনি / আমার / প্রজেক্ট 1 / মিডিয়াতে কোনও ফাইল পরিবর্তন করেন তবে আপনি এটি প্রতিশ্রুতিবদ্ধ করতে এবং এটি কোনও দূরবর্তী সার্ভারে না ঠেকিয়ে / আমার / প্রকল্প 2 / মিডিয়া থেকে টানতে পারেন:
cd /my/project1/media
git commit -a -m "message"
cd /my/project2/media
git pull project1 master
আপনি এই কমিটগুলি পরে মুছে ফেলার জন্য মুক্ত (গিট রিসেট সহ) কারণ আপনি এগুলি অন্য ব্যবহারকারীর সাথে ভাগ করে নি।