গিটে প্রতিশ্রুতিবদ্ধ ফাইলটি ফেরত দেওয়ার কোনও সম্ভাবনা আছে কি? আমি গিটহাবের কাছে একটি প্রতিশ্রুতিবদ্ধ করেছি এবং তখন আমি বুঝতে পারি যে এমন একটি ফাইল আছে যা আমি ধাক্কা দিতে চাই না (আমি পরিবর্তনগুলি শেষ করি না)।
গিটে প্রতিশ্রুতিবদ্ধ ফাইলটি ফেরত দেওয়ার কোনও সম্ভাবনা আছে কি? আমি গিটহাবের কাছে একটি প্রতিশ্রুতিবদ্ধ করেছি এবং তখন আমি বুঝতে পারি যে এমন একটি ফাইল আছে যা আমি ধাক্কা দিতে চাই না (আমি পরিবর্তনগুলি শেষ করি না)।
উত্তর:
আপডেট: নিরাপদ পদ্ধতি যুক্ত করা হয়েছে
আপনার ফাইলের পূর্ববর্তী (অপরিবর্তিত) অবস্থাটি পরীক্ষা করে দেখুন; ডাবল ড্যাশ লক্ষ্য করুন
git checkout HEAD^ -- /path/to/file
এটি প্রতিশ্রুতিবদ্ধ:
git commit -am "revert changes on this file, not finished with it yet"
এটি ধাক্কা, কোন বাহিনী প্রয়োজন:
git push
আপনার অসমাপ্ত কাজ ফিরে পেতে, আবার (3 বার তীর আপ):
git checkout HEAD^ -- /path/to/file
আপনার দুর্ঘটনাক্রমে ধাক্কা দেওয়া কাজটি উদ্বোধন করে, সংগ্রহশালার হেডের শেষ প্রতিশ্রুতিটি সংশোধন করার জন্য, আপনার সহকর্মীর সাথে সংঘাতের দিকে ঝুঁকছেন, যিনি ইতিমধ্যে এটি টানতে পেরেছেন, এবং যিনি ধূসর চুল গজিয়ে উঠবেন এবং তার স্থানীয় শাখার প্রধানের সাথে পুনর্মিলন করার চেষ্টা করতে গিয়ে অনেক সময় হারাবেন কেন্দ্রীয় এক সঙ্গে:
শেষ প্রতিশ্রুতি থেকে ফাইল পরিবর্তন সরাতে:
শেষ প্রতিশ্রুতি দেওয়ার আগে ফাইলটিকে রাজ্যে ফিরিয়ে আনতে, করুন:
git checkout HEAD^ /path/to/file
রিভার্ট করা ফাইলটির সাথে শেষ প্রতিশ্রুতি আপডেট করতে, করুন:
git commit --amend
রেপোতে আপডেট করা প্রতিশ্রুতি ঠেলে, করুন:
git push -f
সত্যিই, আগে উল্লিখিত পছন্দসই পদ্ধতিটি ব্যবহার করে বিবেচনা করুন।
git checkout HEAD~2 /path/to/file? সম্পাদনা করুন: দেখে মনে হচ্ছে আমি আমার ক্ষেত্রে যা চেয়েছিলাম তা সহজ ছিলgit rm /path/to/file
আপনি যদি রিমোট রেপো থেকে ফাইলটি সরাতে চান তবে প্রথমে এটি আপনার প্রকল্প থেকে --cache বিকল্পের সাথে সরিয়ে ফেলুন এবং তারপরে এটি চাপ দিন:
git rm --cache /path/to/file
git commit -am "Remove file"
git push
(কিছুটা আগে এই ফাইলটি রিমোট রেপোতে যুক্ত করা হলেও এটি কাজ করে) আপনি যে ফাইল এক্সটেনশানগুলি চাপতে চান না সেটিকে .gitignore এ যুক্ত করতে ভুলবেন না।
আপনি কেবলমাত্র একটি ফাইল একটি নির্দিষ্ট সংশোধনীতে ফিরিয়ে দিতে পারবেন।
প্রথমে আপনি যা ফাইলটি পরিবর্তন হয়েছিল তা পরীক্ষা করে দেখতে পারেন।
git log path/to/file.txt
তারপরে আপনি রিভিশন নম্বর দিয়ে ফাইলটি চেকআউট করতে পারেন।
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
এর পরে আপনি প্রতিশ্রুতিবদ্ধ এবং এটি আবার ধাক্কা দিতে পারেন।
সঠিক অবস্থায় ফাইলটি রিসেট করুন, প্রতিশ্রুতিবদ্ধ করুন এবং আবার চাপ দিন।
আপনি যদি নিশ্চিত হন যে অন্য কেউ এখনও আপনার পরিবর্তনগুলি এনেছে না, আপনি --amendপ্রতিশ্রুতি দেওয়ার সময়, আপনার পূর্ববর্তী প্রতিশ্রুতি (অর্থাত্ পুনর্লিখনের ইতিহাস) সংশোধন করতে এবং এরপরে চাপ দিতে পারেন। আমি মনে করি -fধাক্কা দেওয়ার সময় আপনাকে বিকল্পটি ব্যবহার করতে হবে , ধাক্কা দিতে বাধ্য করতে, যদিও।
সর্বশেষ কমিটের হ্যাশ কোডটি পান।
git log git revert <hash_code_from_git_log>git pushজিএইচআর পরীক্ষা করে দেখুন। আপনি যা প্রয়োজন কখনও তা পেতে পারেন, আশা করি আপনি এটি দরকারী