আপনি সম্ভবত এটির কারণ হিসাবে কি করেছেন:
এই জাতীয় জিনিসটি ঘটে যখন আপনি একটি সামান্য প্রোগ্রাম ঠেকাতে যান। আপনি এমন কিছু পরিবর্তন করতে চলেছেন যা ইতিমধ্যে কাজ করে যাচ্ছিল, তাই আপনি আপনার লেভেল -3 এর চিরস্থায়ী অযোগ্যতার অক্ষর:
machine1:~/proj1> git init
এবং আপনি যোগ / প্রতিশ্রুতিবদ্ধ শুরু। তবে তারপরে , প্রকল্পটি আরও জড়িত হতে শুরু করে এবং আপনি এটির জন্য অন্য কম্পিউটার থেকে (আপনার বাড়ির পিসি বা ল্যাপটপের মতো) কাজ করতে চান, সুতরাং আপনি এর মতো কিছু করুন
machine2:~> git clone ssh://machine1/~/proj1
এবং এটি ক্লোন করে এবং সবকিছু দেখতে ভাল লাগে এবং তাই আপনি মেশিন 2 থেকে আপনার কোডটিতে কাজ করেন।
তারপরে ... আপনি মেশিন 2 থেকে আপনার প্রতিশ্রুতিগুলি ঠেলে দেওয়ার চেষ্টা করুন এবং শিরোনামে সতর্কতা বার্তাটি পাবেন।
এই বার্তার কারণ হ'ল আপনি যে গিট রেপোটি টেনেছেন সেটি মেশিন 1-এ folder ফোল্ডারের জন্য ব্যবহার করার ইচ্ছা ছিল। আপনি এটিকে ঠিকঠাক থেকে ক্লোন করতে পারেন তবে ধাক্কা দিয়ে সমস্যা দেখা দিতে পারে। দুটি ভিন্ন স্থানে কোড পরিচালনা করার "যথাযথ" উপায়টি একটি "বেয়ার" রেপো সহ, যেমনটি প্রস্তাবিত হয়েছে। একটি খালি রেপো কোন কাজ করা হচ্ছে বলে ডিজাইন করা হয় না এ এটা, এটা একাধিক উত্স থেকে করে তুল্য বোঝানো হয়। এ কারণেই শীর্ষ-রেট করা উত্তরটি আপনার পরে .git ফোল্ডার বাদে সমস্ত ফাইল / ফোল্ডার মোছার পরামর্শ দেয় git config --bool core.bare true
।
শীর্ষস্থানীয় উত্তরটি পরিষ্কার করা: এর উত্তরের বেশিরভাগ মন্তব্যে এমন কিছু বলা হয়েছে যে "আমি মেশিন 1 থেকে অ-গিট ফাইলগুলি মুছলাম না এবং আমি এখনও মেশিন 2 থেকে প্রতিশ্রুতিবদ্ধ করতে সক্ষম হয়েছি"। সেটা ঠিক. তবে, অন্যান্য ফাইলগুলি এখন গিট রেপো থেকে সম্পূর্ণ "তালাকপ্রাপ্ত" are git status
সেখানে চেষ্টা করুন এবং আপনার "মারাত্মক: এই ক্রিয়াকলাপটি অবশ্যই একটি কাজের গাছে চালানো উচিত" এর মতো কিছু দেখতে হবে। সুতরাং, ফাইলগুলি মুছে ফেলার পরামর্শটি এমন নয় যাতে মেশিন 2 থেকে প্রতিশ্রুতি কাজ করবে ; এটি যাতে আপনি বিভ্রান্ত না হন এবং মনে করেন যে গিটটি এখনও এই ফাইলগুলি ট্র্যাক করছে। তবে, আপনি যদি এখনও মেশিন 1 এর ফাইলগুলিতে কাজ করতে চান তবে ফাইলগুলি মুছে ফেলা সমস্যা?
সুতরাং, আপনি আসলে কি করা উচিত?
আপনি এখনও মেশিন 1 এবং মেশিন 2 তে কতটা কাজ করার পরিকল্পনা করছেন তার উপর নির্ভর করে ...
আপনি যদি মেশিন 1 থেকে বিকাশ সম্পন্ন করে ফেলেছেন এবং আপনার সমস্ত বিকাশকে মেশিন 2 এ সরিয়ে নিয়েছেন ... শীর্ষস্থানীয় উত্তরের পরামর্শ অনুসারে কেবল তাই করুন: git config --bool core.bare true
এবং তারপরে, বিকল্প হিসাবে, সেই ফোল্ডার থেকে .git ব্যতীত সমস্ত ফাইল / ফোল্ডার মুছুন, কারণ তারা 'অবিরত না থাকায় এবং বিভ্রান্তির কারণ হতে পারে।
মেশিন 2 এ যদি আপনার কাজটি কেবলমাত্র এক সময়ের জিনিস ছিল এবং আপনার সেখানে বিকাশ চালিয়ে যাওয়ার দরকার নেই ... তবে খালি রেপো তৈরি করে বিরক্ত করবেন না; কেবল ftp / rsync / scp / ইত্যাদি। আপনার ফাইলগুলি মেশিন * 2 * থেকে মেশিনের উপরে ফাইলগুলি * 1 *, মেশিন * 1 * থেকে প্রতিশ্রুতিবদ্ধ / চাপ দিন এবং তারপরে ফাইলগুলি মেশিনের বাইরে * 2 * মুছুন। অন্যরা একটি শাখা তৈরি করার পরামর্শ দিয়েছে, তবে আমি মনে করি এটি যদি আপনি অন্য মেশিনের থেকে এক সময়ের ভিত্তিতে কিছুটা উন্নয়ন ঘটাতে চান তবে এটি কিছুটা অগোছালো।
আপনার যদি মেশিন 1 এবং মেশিন 2 উভয়ই বিকাশ চালিয়ে নেওয়া দরকার ... তবে আপনার জিনিসগুলি সঠিকভাবে সেট আপ করা দরকার। আপনার রেপোটিকে খালি রূপান্তর করতে হবে , তারপরে আপনাকে কাজ করার জন্য আপনাকে মেশিন 1 এ তার একটি ক্লোন তৈরি করতে হবে । সম্ভবত এটি করার দ্রুততম উপায়টি এটি করা
machine1:~/proj1> git config --bool core.bare true
machine1:~/proj1> mv .git/ ../proj1.git
machine1:~/proj1> cd ..
machine1:~> rm -rf proj1
machine1:~> git clone proj1.git
machine1:~> cd proj1
খুব গুরুত্বপূর্ণ: কারণ আপনি রেপোর অবস্থানটি প্রোজ 1 থেকে প্রজ 1.git এ সরিয়ে নিয়েছেন, আপনাকে এটি মেশিন 2 এ .git / কনফিগারেশন ফাইলে আপডেট করতে হবে । এর পরে, আপনি মেশিন 2 থেকে আপনার পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করতে পারেন। সবশেষে, আমি আমার খালি রেপোগুলিকে আমার কার্য গাছ থেকে দূরে কেন্দ্রীয় অবস্থানে রাখার চেষ্টা করি (যেমন 'প্রজ 1' হিসাবে একই প্যারেন্ট ফোল্ডারে রাখি না)। আমি আপনাকে অনুরূপভাবে করার পরামর্শ দিচ্ছি, তবে আমি উপরের ধাপগুলি যথাসম্ভব সহজ করে রাখতে চেয়েছিলাম।