Git হলো একটি ডিস্ট্রিবিউটেড ভার্সন কন্ট্রোল সিস্টেম যা मुख্যভাবে সফটওয়্যার ডেভেলপমেন্টের সময় সোর্স কোডের পরিবর্তন ট্র্যাক করতে ব্যবহৃত হয়। GitHub হলো Git-ভিত্তিক ভার্সন কন্ট্রোলের জন্য একটি অনলাইন হোস্টিং সার্ভিস। এই দুটি সার্ভিস সফটওয়্যার ডেভেলপমেন্টে ব্যাপকভাবে ব্যবহৃত হয়। কিন্তু gầnে অনেক ইউজার রিপোর্ট করেছেন যে তারা "git" কমান্ড এক্সিকিউট করতে পারছেন না।
আপনি একলে নন। আপনি মনে করেন আপনি Git ওয়ার্কফ্লো মাস্টার করেছেন, কিন্তু আপনি একটি এরর saamna করেছেন যা আপনি কখনো দেখেননি। Git এর সাথে কাজ করার সময় বিভ্রান্তিকর এবং কখনো কখনো ভীতিকর এরর মেসেজ সম্মুখীন হওয়া почти অবিয়াজ্য, তাই প্রথমে মনে রাখুন যে অন্যান্য Git ইউজাররা আপনার সমস্যা বুঝতে পারেন।
Git ইউজাররা এই বিরক্তিকর Git Fatal: ‘Origin’ does not appear to be a git repository এররটির জন্য অপরিচিত নন। এবং এর মূল কারণ খুঁজে বের করা কঠিন হতে পারে আপনি না জানলে কোথায় খুঁজবেন। কিন্তু Git ছাড়া দেওয়ার আগে আপনি দ্রুত শিখতে পারেন এই এরর কেন হয়, কীভাবে ডায়াগনোস করবেন এবং ভবিষ্যতে এটা এড়াতে পারবেন কীভাবে।
প্রো টিপ: আপনার ম্যাক স্ক্যান করুন কর্মক্ষমতা সমস্যা, জাঙ্ক ফাইল, ক্ষতিকর অ্যাপ এবং নিরাপত্তা হুমকির জন্য
যা সিস্টেম সমস্যা বা ধীর কর্মক্ষমতার কারণ হতে পারে।
Fatal: ‘Origin’ does not appear to be a git repository সমস্যা কী?
git init কমান্ডটি একটি নতুন Git রিপোজিটরি তৈরির প্রক্রিয়া শুরু করে। এই কমান্ডটি শুধু একটি ফোল্ডারকে Git রিপোজিটরি হিসেবে সেট আপ করে। এটি এক রিপোজিটরিকে অন্য রিপোজিটরির সাথে সংযুক্ত করে না।
অন্যদিকে, git clone কমান্ডটি একটি লোকাল রিপোজিটরিকে একটি রিমোট রিপোজিটরির সাথে সংযুক্ত করে। কারণ Git জানে একটি প্রজেক্টের কোড কোথা থেকে উৎপন্ন হয়েছে এবং আপনি যেখানে থেকে ক্লোন করেছেন সেটা ব্যবহার করে অনুমান করে যে আপনি কোথায় কমিট পুশ করবেন।
আপনি যখন একটি নতুন রিপোজিটরি তৈরি করেন এবং প্রথমে Git-কে না বুঝিয়ে যে কোডটি কোথায় পুশ করা উচিত, কোড কমিট করার চেষ্টা করেন, তখন আপনি "fatal: ‘origin’ does not appear to be a git repository" এররটি পাবেন।
Git রিপোজিটরি কী?
GIT রিপোজিটরিগুলো একটি প্রজেক্টের বিভিন্ন ভার্সন থেকে ফাইলের সংগ্রহ ধারণ করে। এই ফাইলগুলো রিপোজিটরি থেকে ইউজারের লোকাল সার্ভারে ইম্পোর্ট করা হয় ফাইল কন্টেন্টে আরও আপডেট এবং মডিফিকেশনের জন্য। একটি VCS (Version Control System) এই ভার্সনগুলো তৈরি করতে এবং একটি রিপোজিটরিতে সংরক্ষণ করতে ব্যবহৃত হয়। ক্লোনিং হলো একটি বিদ্যমান Git রিপোজিটরি থেকে বিভিন্ন Git টুল ব্যবহার করে কন্টেন্ট কপি করার প্রক্রিয়া।
ক্লোনিং প্রক্রিয়া সম্পন্ন হলে, ইউজার তার লোকাল মেশিনে সম্পূর্ণ রিপোজিটরি পায়। ক্লোনিং সম্পন্ন হলে, Git অনুমান করে রিপোজিটরির ওপর ভবিষ্যতের সকল কাজ ইউজার হিসেবে করা হবে। ইউজাররা নতুন রিপোজিটরি তৈরি করতে পারেন বা বিদ্যমান রিপোজিটরি মুছে ফেলতে পারেন। একটি রিপোজিটরি মুছে ফেলার সবচেয়ে সহজ উপায় হচ্ছে রিপোজিটরির ফোল্ডারটি মুছে ফেলা।
Git রিপোজিটরির সাথে কাজ করার সময়, আপনি মূলত সেই ডিরেক্টরিগুলোর সাথে কাজ করছেন যেগুলো Git প্রজেক্ট হিসেবে কনফিগার করা হয়েছে। আপনার লোকাল কম্পিউটারের অথবা রিমোট সার্ভারের প্রায় যেকোনো ডিরেক্টরিকে Git ব্যবহার করে তৈরি করা যায়।
Git রিপোজিটরি সঠিকভাবে ডায়াগনোস করার জন্য যে আপনার Git প্রজেক্ট কমান্ড এক্সেপ্ট করছে না বা রিমোট রিপোজিটরি রিকগনাইজ করছে না, আপনাকে প্রথমে বুঝতে হবে Git রিপোজিটরির সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করার সময় কী খুঁজে।
যেকোনো ডিরেক্টরি, লোকাল বা রিমোট, অবশ্যই Git-ইনিশিয়ালাইজড হতে হবে, অর্থাৎ আপনাকে নিচের কমান্ডটি রান করতে হবে: git init
আপনি যদি এই কমান্ডটি একটি লোকাল ডিরেক্টরিতে রান করেন, তবে সেই ডিরেক্টরি একটি Git রিপোজিটরিতে রূপান্তরিত হয়। একটি সাকসেস মেসেজ আসবে যা বোঝাবে কমান্ডটি সফল হয়েছে। আপনি লক্ষ্য করবেন যে প্রতিটি Git রিপোজিটরির একটি .git ডিরেক্টরি থাকে যেখানে গুরুত্বপূর্ণ ফাইল এবং রেফারেন্স পয়েন্ট সংরক্ষিত থাকে।
অন্যদিকে, রিমোট রিপোজিটরি ইনিশিয়ালাইজ করার সময় –bare অপশন ব্যবহার করা রীতি: git init –bare
এটি একটি "বেয়ার" রিপোজিটরি তৈরি করে, যা মূলত একটি খালি ডিরেক্টরি যা Git দিয়ে ইনিশিয়ালাইজ করা হয়েছে এবং যা Git কমান্ড রিসিভ এবং রান করতে সক্ষম। বেয়ার রিপোজিটরি এক বা একাধিক Git ইউজারের জন্য একটি চমৎকার "হাব" হিসেবে কাজ করে যেখানে থেকে ক্লোন, পুশ এবং পুল করা যায়।
একটি Git রিপোজিটরি স্বয়ংক্রিয়ভাবে কোনো রিমোট রিপোজিটরির সাথে লিংকড হয় না। আপনি যদি এর লোকেশন স্পেসিফাই না করে রিমোট রিপোজিটরিতে চেঞ্জ পুশ করার চেষ্টা করেন, তবে আপনি "fatal: ‘origin’ does not appear to be a git repository" এররটি পাবেন।
Fatal ‘Origin’ does not appear to be a git repository এরর কেন হয়?
যখন আপনি একটি ডিরেক্টরিতে ক্লোন বা অন্য কমান্ড রান করার চেষ্টা করেন যা Git রিপোজিটরি হিসেবে রিকগনাইজড নয়, তখন "fatal: ‘origin’ does not appear to be a git repository" এররটি হয়। হয়তো ডিরেক্টরি বা রিমোট ফাইল পাথ Git ইনিশিয়ালাইজ করেনি, অথবা আপনি যে ফাইল পাথটি এক্টিভ রিপোজিটরি হিসেবে এক্সেস করার চেষ্টা করছেন সেটা ভুল। এই এরর ট্রিগার করার ফ্যাক্টরগুলো:
- Missing Origin: এই এররটি হয় যখন "Origin" ফিল্ডটি মিসিং থাকে। কিছু কমান্ড সঠিকভাবে কাজ করে না যদি "Github-Fork" এর রেফারেন্স মিসিং থাকে।
- Incorrect URL: কিছু ক্ষেত্রে, অ্যাপ্লিকেশন দ্বারা সেট করা URL কনফিগারেশন ভুল হতে পারে এবং এটিকে পরিবর্তন করতে হবে। ফলে কিছু কমান্ড সঠিকভাবে কাজ করে না।
Git মূলত ইঙ্গিত করছে যে আপনি যে রিপোজিটরির সাথে কাজ করার চেষ্টা করছেন সেটা Git প্রজেক্ট হিসেবে রিকগনাইজযোগ্য নয়। তাই আপনি যদি মনে করেন আপনি সব কিছু সঠিকভাবে সেট আপ করেছেন, তবে এই এররটা বিভ্রান্তিকর হতে পারে। কিন্তু চিন্তা করবেন না, একটি সিম্পল টাইপো এই এররটির কারণ হতে পারে।
এখন আমরা সমাধানগুলো দেখব যাতে আপনার সমস্যায় মৌলিক ধারণা হয়। পড়তে থাকুন জানতে পারবেন এই এরর ডায়াগনোস এবং ফিক্স করতে আপনি কী করতে পারেন।
Fatal: ‘Origin/Master’ does not appear to be a git repository’ এরর ট্রাবলশুট করা
এই এরর পাওয়া বিভ্রান্তিকর হতে পারে কারণ এটি বিঘ্ন সৃষ্টি করে এবং সময় নেয়। এই টাইপের গ্লিচ এড়ানোর একটি উপায় হচ্ছে আপনার ডিভাইস নিয়মিত Outbyte MacAries দিয়ে স্ক্যান করা। এই টুল ছোট ছোট ইস্যুগুলো বড় কৌশিক হয়ে যাওয়া থেকে রোধ করে।
কিন্তু আপনি যদি এই এরর সম্মুখীন হন, তবে নিচের ধাপগুলো সহজে সমাধান করবে:
ফিক্স #১: Origin যোগ করুন।
আপনি যখন git init কমান্ড দিয়ে তৈরি করা একটি নতুন git রিপোজিটরিতে কমিট করার চেষ্টা করেন, তখন "fatal: ‘origin’ does not appear to be a git repository" এররটি আসে। এর কারণ হচ্ছে git init লোকাল রিপোজিটরিকে রিমোট রিপোজিটরির সাথে লিংক করে না। আপনি এটি টেস্ট করতে পারেন টাইপ করে: git remote -v
যদি origin নামে কোনো রিমোট রিপোজিটরি লিস্টেড নাও থাকে, তবে আপনাকে ম্যানুয়ালি এটি যোগ করতে হবে নিচের সমাধান অনুসরণ করে।
- "Command" এবং "Space" বাটন একসাথে চাপুন। এটি Spotlight খুলবে।
- "Terminal" টাইপ করুন এবং "Return" চাপুন।
- নিচের কমান্ডটি এন্টার করুন এবং "Return" কী চাপুন: git remote -v
- চেক করুন "Origin" নামে কোনো রিমোট রিপোজিটরি লিস্টেড আছে কিনা।
- যদি না থাকে, তবু বুঝতে পারবেন আপনার "Origin" মিসিং।
- Origin যোগ করতে এই কমান্ডটি ব্যবহার করুন: git remote add origin url/to/your/fork
চেক করুন সমস্যা এখনও আছে কিনা।
ফিক্স #২: আপনার রিমোট রিপোজিটরির ফাইল পাথ চেক করুন।
রিমোট রিপোজিটরি থেকে ক্লোন, পুশ বা পুল করার চেষ্টা করার সময় একটি Git ইউজার প্রায়শই "origin does not appear to be a git repository fatal" এরর সম্মুখীন হয়। রিমোট রিপোজিটরির ফাইল পাথ ডাবল চেক করুন। এটা করার кільকটি উপায় আছে।
আপনি যদি ক্লোন করেন, তবে নিশ্চিত হন যে আপনার রিপোজিটরি এক্সেস আছে। আপনি যদি GitHub-এ পাবলিক রিপোজিটরি ক্লোন না করেন, তবে আপনি সম্ভবত SSH-এর মাধ্যমে কানেক্ট করছেন। একইভাবে, আপনার ক্লোন কমান্ডের সিনট্যাক্স চেক করুন। HTTP-এর মাধ্যমে রিপোজিটরির সাথে কানেক্ট করার একটি বেসিক ক্লোন কমান্ডের উদাহরণ: git clone https://github.com/WordPress/WordPress.git
আপনি যখন এই কমান্ডটি আপনার পছন্দের টার্মিনাল এমুলেটরে রান করবেন, এটি "WordPress" নামে একটি ডিরেক্টরি তৈরি করবে যাতে WordPress-এর সকল কোর ফাইল থাকবে। এতে .git ডিরেক্টরিও থাকবে এবং পুরো প্রজেক্ট হিস্টরি। ফলে এই ডিরেক্টরিটি একটি ফুলি ফাংশনাল লোকাল git রিপোজিটরি হবে। এটিও রিমোট রিপোজিটরির ইনফরমেশন (GitHub-এ) সঠিকভাবে সেট আপ থাকবে।
তবে, আপনি যদি একটি প্রাইভেট সার্ভারের সাথে কমিউনিকেট করেন যেটিতে HTTP অ্যাক্সেস নেই, তবে আপনাকে এই সিনট্যাক্স মডিফাই করতে হবে একটি সার্ভার ইউজার ইনক্লুড করে যার উপযুক্ত প্রিভিলেজ আছে। এইीलिये প্রাইভেট Git সার্ভার কনফিগার করার সময় একটি স্পেশাল "Git" ইউজার তৈরি করা ভালো আইডিয়া যার রিপোজিটরি অ্যাক্সেস থাকবে: git clone admin@wsxdn.com:/home/user/production.git
GitHub-এর HTTP ভ্যারিয়েন্টের বিপরীতে, এই ক্লোন URL-এ admin@wsxdn.com অন্তর্ভুক্ত। এই কেসে, "user" হলো একটি সার্ভার ইউজার যার সার্ভারের Git রিপোজিটরিতে অ্যাক্সেস এবং প্রিভিলেজ আছে। হোস্টনেম, ডোমেইন নেম বা আপনি যে সার্ভারের সাথে কানেক্ট করার চেষ্টা করছেন তার IP অ্যাড্রেস হলো ডেস্টিনেশন। ইউজার এবং সার্ভার ডিক্লেরেশন ফাইল পাথ থেকে কলন (:) দিয়ে আলাদা।
এই কেসে ফাইল পাথ খুব গুরুত্বপূর্ণ। আপনার রিপোজিটরির সঠিক লোকেশন এবং নাম ফাইল পাথ দ্বারা ইঙ্গিত করা হয়। উপরের উদাহরণে রিপোজিটরিটি হলো production.git নামের একটি ডিরেক্টরি।
আপনার রিপোজিটরি ডিরেক্টরির জন্য সবসময় .git এক্সটেনশন ব্যবহার করুন। production.git ডিরেক্টরিটি ইউজারের হোম ডিরেক্টরিতে অবস্থিত, যা হলো /home/user।
আপনাকে এই সিনট্যাক্সটি সঠিকভাবে রিপ্লিকেট করতে হবে, অন্যথায় আপনি "fatal: ‘origin’ does not appear to be a git repository" এররটি পাবেন।
ফিক্স #৩: Origin কে Master-এ চেঞ্জ করুন।
আপনি যদি Master থেকে পুল করার চেষ্টা করেন, তবে আপনাকে প্রথমে Origin কে Master-এ চেঞ্জ করতে হবে রিমোট রিপোজিটরি অ্যাড বা রিমুভ করার আগে। এই ধাপে আমরা Origin কে Master-এ চেঞ্জ করব। এর জন্য:
- "Command" এবং "Space" বাটন একসাথে চাপুন। এটি Spotlight খুলবে।
- "Terminal" টাইপ করুন এবং "Return" চাপুন।
- Origin কে master-এ চেঞ্জ করার কমান্ডটি এন্টার করুন: git pull origin master
চেক করুন "fatal: ‘origin’ does not appear to be a git repository" সমস্যা গিয়ে গেছে কিনা।
ফিক্স #৪: করপ্ট HEAD ফাইল ফিক্স করুন।
উপরের ট্রাবলশুটিং স্টেপগুলো আপনার সমস্যা সমাধান না করলে, আপনার HEAD ফাইলের সাথে সমস্যা থাকতে পারে। এই ফাইলটি এক লাইন ধারণ করে যা আপনার বর্তমান ব্রাঞ্চের পয়েন্টার হিসেবে কাজ করে।
আপনি যদি Git-এ নতুন হন, তবে "ব্রাঞ্চ" শব্দটিও আপনার জন্য অপরিচিত হতে পারে। একটি ব্রাঞ্চ হলো আপনার রিপোজিটরির একটি ভার্সন jota আপনি প্রজেক্ট চেঞ্জ টেস্ট করতে ব্যবহার করতে পারেন। প্রতিটি রিপোজিটরির একটি মেইন ব্রাঞ্চ থাকে যা সত্যের উৎস হিসেবে কাজ করে এবং যা প্রোডাকশনে ডিপ্লয় করা উচিত। আপনি যদি মেইন ব্রাঞ্চে পরিবর্তন আনা চান, তবে আপনি আপনার প্রজেক্টের একটি আলাদা ভার্সন বা ব্রাঞ্চ তৈরি করতে পারেন চেঞ্জগুলো টেস্ট করতে। আপনি যখন একটি নতুন ব্রাঞ্চ তৈরি করেন, Git HEAD ফাইলটি আপডেট করে আপনার বর্তমান ওয়ার্কিং ব্রাঞ্চ রিফ্লেক্ট করতে।
তবে, কিছু কেসে HEAD ফাইলটি করপ্ট হয়ে যেতে পারে, ফলে Fatal: ‘Origin’ does not appear to be a Git Repository এররটি হয়। HEAD ফাইল চেক করতে আপনি cat .git/HEAD কমান্ড ব্যবহার করতে পারেন কন্টেন্ট প্রিন্ট করতে।
আপনি যখন এই কমান্ডটি রান করবেন, আপনার বর্তমান ব্রাঞ্চের নাম দেখতে পাবেন। যদি এতে আপনার বর্তমান ব্রাঞ্চ যা আপনি কাজ করছেন সেটি না থাকে, তবে আপনাকে ফাইলটি আপডেট করতে হবে। আপনি নিচের কমান্ড টাইপ করে এটি করতে পারেন: echo ‘ref: refs/heads/<branch_name>’ > .git/HEAD
উপসংহার
Fatal: ‘Origin’ does not appear to be a Git Repository এরর সম্মুখীন হলে চিন্তা করতে হবে না। আপনি যদি এই সমস্যা পান, মনে রাখুন Git আপনাকে জানাতে চাচ্ছে যে আপনার বর্তমান ওয়ার্কিং ডিরেক্টরি ট্র্যাক করা হচ্ছে না, তাই এই আর্টিকেলে আউटलাইন করা বেসিক ধাপগুলো অনুসরণ করুন, যা নিচে সারাংশ দেওয়া হলো:
- Origin ম্যানুয়ালি অ্যাড করুন।
- চেক করুন আপনি ডিরেক্টরির নাম সঠিক টাইপ করেছেন কিনা।
- চেক করুন আপনি রিপোজিটরি সঠিকভাবে তৈরি করেছেন কিনা। যদি ডিরেক্টরিতে .git রিপোজিটরি না থাকে, তবে git init ব্যবহার করে সঠিকভাবে রিপোজিটরি ইনিশিয়ালাইজ করুন বা একটি বিদ্যমান রিপোজিটরি ক্লোন করুন।
- চেক করুন আপনার বর্তমান ব্রাঞ্চের HEAD ফাইলে সঠিক ইনফরমেশন আছে কিনা। যদি না থাকে, তবে ফাইলের কন্টেন্ট পরিবর্তন করুন ref: refs/heads/<branch_name>-এ।
উপরের ট্রাবলশুটিং ধাপগুলো অনুসরণ করলে আপনি প্রায় সব কেসে এই এররটি মাত্র কয়েক মিনিটেই সমাধান করতে পারবেন।