ইতিহাস বদলাচ্ছে
এটি যদি সর্বশেষতম প্রতিশ্রুতি হয় তবে আপনি কেবল এটি করতে পারেন:
git commit --amend
এটি শেষ প্রতিশ্রুতি বার্তা সহ সম্পাদককে নিয়ে আসে এবং আপনাকে বার্তাটি সম্পাদনা করতে দেয়। (আপনি -m
যদি পুরানো বার্তা মুছতে চান এবং একটি নতুন ব্যবহার করতে চান তবে আপনি ব্যবহার করতে পারেন ))
ঠেলাঠেলি
এবং তারপরে আপনি ধাক্কা দেওয়ার সময় এটি করুন:
git push --force-with-lease <repository> <branch>
অথবা আপনি "+" ব্যবহার করতে পারেন:
git push <repository> +<branch>
অথবা আপনি ব্যবহার করতে পারেন --force
:
git push --force <repository> <branch>
এই আদেশগুলি ব্যবহার করার সময় সতর্কতা অবলম্বন করুন।
অন্য কেউ যদি একই শাখায় পরিবর্তনগুলি ঠেকায়, আপনি সম্ভবত এই পরিবর্তনগুলি ধ্বংস করা এড়াতে চান। --force-with-lease
যদি কোনো মূল প্রজেক্টের পরিবর্তন করা হয়েছে কারণ এটি বাতিল করে দেবে (বিকল্প, সবচেয়ে নিরাপদ হয়
আপনি যদি শাখাটি স্পষ্টভাবে উল্লেখ না করেন, গিট ডিফল্ট পুশ সেটিংস ব্যবহার করবে। যদি আপনার ডিফল্ট পুশ সেটিংটি "মিলছে", তবে আপনি একই সময়ে কয়েকটি শাখায় পরিবর্তনগুলি ধ্বংস করতে পারেন।
পরে টান / আনছে
ইতিমধ্যে যে কেউ টানেছে সে এখন একটি ত্রুটি বার্তা পাবে এবং তাদের আপডেট করার প্রয়োজন হবে (ধরে নিবেন তারা নিজেরাই কোনও পরিবর্তন করছেন না) এই জাতীয় কিছু করে:
git fetch origin
git reset --hard origin/master # Loses local commits
ব্যবহার করার সময় সতর্কতা অবলম্বন করুন reset --hard
। আপনার যদি শাখায় পরিবর্তন হয় তবে সেই পরিবর্তনগুলি ধ্বংস হয়ে যাবে।
ইতিহাস পরিবর্তনের বিষয়ে একটি নোট
ধ্বংস হওয়া ডেটা আসলেই কেবল পুরানো প্রতিশ্রুতি বার্তা, তবে এটি --force
জানে না এবং আনন্দের সাথে অন্যান্য ডেটাও মুছে ফেলবে। সুতরাং --force
"আমি ডেটা ধ্বংস করতে চাই এবং কী ডেটা ধ্বংস হচ্ছে তা আমি নিশ্চিতভাবে জানি" know তবে যখন ধ্বংস হওয়া ডেটা প্রতিশ্রুতিবদ্ধ হয়, আপনি প্রায়শই রিফলগ থেকে পুরানো কমিটগুলি পুনরুদ্ধার করতে পারেন — ডেটাটি ধ্বংসের পরিবর্তে অনাথ হয় (যদিও অনাথ কমিটি পর্যায়ক্রমে মুছে ফেলা হয়)।
আপনি যদি মনে করেন না যে আপনি ডেটা ধ্বংস করছেন, তবে এ থেকে দূরে থাকুন --force
... খারাপ জিনিসগুলি হতে পারে ।
এ কারণেই --force-with-lease
কিছুটা নিরাপদ।