সমস্ত ব্যবহারিক উদ্দেশ্যে, আপনাকে প্রথমে চিন্তিত হওয়া উচিত হ'ল আপনার পাসওয়ার্ড পরিবর্তন করা! আপনার গিট সংগ্রহস্থল পুরোপুরি স্থানীয় কিনা বা আপনার অন্য কোনও দূরবর্তী সংগ্রহস্থল এখনও রয়েছে কিনা তা আপনার প্রশ্ন থেকে পরিষ্কার নয়; এটি যদি দূরবর্তী হয় এবং অন্যের কাছ থেকে সুরক্ষিত না হয় তবে আপনার সমস্যা আছে। আপনি যদি এটি ঠিক করার আগে কেউ যদি সেই সংগ্রহস্থলটি ক্লোন করে ফেলে থাকেন তবে তাদের স্থানীয় মেশিনে আপনার পাসওয়ার্ডগুলির একটি অনুলিপি থাকবে এবং ইতিহাস থেকে চলে যাওয়ার সাথে আপনার "স্থির" সংস্করণে আপডেট করার জন্য আপনি তাদের জোর করতে পারেন এমন কোনও উপায় নেই। আপনি কেবলমাত্র নিরাপদ কাজটিই করতে পারেন তা হ'ল আপনার পাসওয়ার্ডটি আপনি যে কোনও জায়গায় ব্যবহার করেছেন এমন কোনও কিছুর কাছে পরিবর্তন করুন।
উপায়টি অতিক্রম করার সাথে সাথে এটি ঠিক করার উপায় এখানে। গিটহাব ঠিক সেই প্রশ্নের উত্তর একটি FAQ হিসাবে দিয়েছেন :
উইন্ডোজ ব্যবহারকারীদের জন্য নোট : এই কমান্ডে একক পরিবর্তে ডাবল কোট (") ব্যবহার করুন
git filter-branch --index-filter \
'git update-index --remove PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' <introduction-revision-sha1>..HEAD
git push --force --verbose --dry-run
git push --force
2019 আপডেট করুন:
এফএকিউ এর বর্তমান কোড:
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
--prune-empty --tag-name-filter cat -- --all
git push --force --verbose --dry-run
git push --force
মনে রাখবেন যে একবার আপনি এই কোডটি গিটহাবের মতো দূরবর্তী সংগ্রহস্থলের দিকে ঠেলে দিয়েছিলেন এবং অন্যরা সেই দূরবর্তী সংগ্রহস্থলটিকে ক্লোন করে ফেলেছেন, আপনি এখন এমন পরিস্থিতিতে আছেন যেখানে আপনি ইতিহাস পুনর্লিখন করছেন। অন্যরা যখন এর পরে আপনার সর্বশেষ পরিবর্তনগুলি টেনে আনার চেষ্টা করবে, তারা একটি বার্তা পাবে যেটি বোঝায় যে পরিবর্তনগুলি প্রয়োগ করা যাচ্ছে না কারণ এটি দ্রুত অগ্রসর নয়।
এটি ঠিক করতে, তাদের হয় হয় তাদের বিদ্যমান সংগ্রহশালাটি মুছতে হবে এবং এটি পুনরায় ক্লোন করতে হবে, বা গিট-রিবেস ম্যানপেজে "পুনরায় পুনরুদ্ধার করা" শীর্ষক নির্দেশাবলী অনুসরণ করতে হবে ।
পরামর্শ : কার্যকর করুনgit rebase --interactive
ভবিষ্যতে, আপনি যদি সংবেদনশীল তথ্য সহ দুর্ঘটনাক্রমে কিছু পরিবর্তন করে থাকেন তবে আপনি রিমোট রিপোজিটরির দিকে এগিয়ে যাওয়ার আগে লক্ষ্য করেন , কিছু সহজ সমাধান রয়েছে। সংবেদনশীল তথ্য যুক্ত করার জন্য যদি আপনি সর্বশেষ প্রতিশ্রুতিবদ্ধ হন তবে আপনি কেবল সংবেদনশীল তথ্য সরিয়ে ফেলতে পারেন, তারপরে চালান:
git commit -a --amend
এটি আপনার করা নতুন পরিবর্তনগুলির সাথে পূর্ববর্তী প্রতিশ্রুতি সংশোধন করবে, এর সাথে সম্পূর্ণ ফাইল অপসারণগুলি সহ git rm
। যদি ইতিহাসে পরিবর্তনগুলি আবার ফিরে আসে তবে তবুও কোনও দূরবর্তী সংগ্রহস্থলের দিকে ঠেলাঠেলি না করে আপনি একটি ইন্টারেক্টিভ রিবেস করতে পারেন:
git rebase -i origin/master
এটি আপনার শেষ সাধারণ পূর্বপুরুষের পর থেকে দূরবর্তী সংগ্রহস্থলের সাহায্যে করা কমিটগুলির সাথে একটি সম্পাদক খুলবে। সংবেদনশীল তথ্যের সাথে প্রতিশ্রুতিবদ্ধ প্রতিনিধিত্ব করে যে কোনও লাইনে "বাছাই করুন" "সম্পাদনা করুন" এ পরিবর্তন করুন এবং সংরক্ষণ করুন এবং প্রস্থান করুন। গিট পরিবর্তনগুলির মধ্য দিয়ে চলবে এবং আপনাকে এমন জায়গায় ছেড়ে দেবে যেখানে আপনি পারেন:
$EDITOR file-to-fix
git commit -a --amend
git rebase --continue
সংবেদনশীল তথ্য সহ প্রতিটি পরিবর্তনের জন্য। অবশেষে, আপনি নিজের শাখায় ফিরে আসবেন এবং আপনি নতুন পরিবর্তনগুলি নিরাপদে ঠেলাতে পারবেন।