আপনি ব্যবহার করে আপনার স্থানীয় পুনর্বিবেচনা দূরবর্তী রেপোতে বাধ্য করতে সক্ষম হবেন
git push -f <remote> <branch>
(যেমন git push -f origin master
) ছেড়ে যাওয়া <remote>
এবং <branch>
সেট করা সমস্ত স্থানীয় শাখা চাপতে বাধ্য করবে --set-upstream
।
কেবল সতর্কতা অবলম্বন করুন, যদি অন্য লোকেরা এই সংগ্রহশালাটি ভাগ করে নিচ্ছে তবে তাদের সংশোধন ইতিহাস নতুনটির সাথে বিরোধ করবে। এবং পরিবর্তনের পয়েন্টের পরে যদি তাদের কোনও স্থানীয় কমিট থাকে তবে তারা অবৈধ হয়ে যাবে।
হালনাগাদ : ভেবেছিলাম আমি একটি পার্শ্ব-নোট যুক্ত করব। যদি আপনি এমন পরিবর্তনগুলি তৈরি করছেন যা অন্যরা পর্যালোচনা করে থাকে, তবে সেই পরিবর্তনগুলির সাথে একটি শাখা তৈরি করা এবং প্রধান উন্নয়ন শাখার সাথে আপ টু ডেট রাখার জন্য পর্যায়ক্রমে পুনরায় সেগুলি করা অস্বাভাবিক নয়। কেবলমাত্র অন্যান্য বিকাশকারীদের জানান যে এটি পর্যায়ক্রমে ঘটবে যাতে তারা কী আশা করবে তা জানবে।
আপডেট 2 : দর্শকের ক্রমবর্ধমান সংখ্যার কারণে আমি যখন আপনার করণীয় তখন কিছু অতিরিক্ত তথ্য যুক্ত করতে চাইupstream
কোন চাপের চাপ দেয় ।
বলুন আমি আপনার রেপো ক্লোন করেছি এবং এর মতো কয়েকটি কমিট যোগ করেছি:
ডি ---- ই বিষয়
/
এ ---- বি ---- সি বিকাশ
তবে পরে development
শাখাটি একটি দ্বারা আঘাত করা হয় rebase
, যা আমি যখন চালাই তখন আমাকে ত্রুটিযুক্ত হতে পারে git pull
:
বস্তাগুলি আনপ্যাক করা হচ্ছে: 100% (3/3), সম্পন্ন হয়েছে।
<রিপো-লোকেশন> থেকে
* শাখা উন্নয়ন -> FETCH_HEAD
স্বয়ংক্রিয়ভাবে মার্জ করা <ফাইলগুলি>
কনফ্লিক্ট (বিষয়বস্তু): <লোকেশন> এ সংঘাতটি মার্জ করুন
স্বয়ংক্রিয় সংহত ব্যর্থ হয়েছে; দ্বন্দ্ব সংশোধন করুন এবং তারপরে ফলাফলটি প্রতিশ্রুতিবদ্ধ।
এখানে আমি দ্বন্দ্বগুলি সংশোধন করতে পারলাম এবং commit
তবে এটি আমাকে সত্যই কুৎসিত প্রতিশ্রুতিবদ্ধ ইতিহাস দিয়ে চলে যাবে:
সি ---- ডি ---- ই ---- এফ বিষয়
/ /
এ ---- বি -------------- সি 'বিকাশ
এটি ব্যবহার করতে লোভনীয় লাগছে git pull --force
তবে সাবধান থাকুন কারণ এটি আপনাকে আটকা পড়ে থাকতে পারে:
ডি ---- ই বিষয়
এ ---- বি ---- সি 'বিকাশ
সুতরাং সম্ভবত সেরা বিকল্পটি একটি হয় git pull --rebase
। এটির জন্য আমার আগের মতো যে কোনও দ্বন্দ্ব সমাধানের প্রয়োজন হবে তবে প্রতিশ্রুতির পরিবর্তে আমি ব্যবহার করব git rebase --continue
। শেষ অবধি কমিটের ইতিহাস আরও ভাল দেখাবে:
ডি '--- ই' বিষয়
/
এ ---- বি ---- সি 'বিকাশ
আপডেট 3: আপনি --force-with-lease
"নিরাপদ" বল ধাক্কা হিসাবে বিকল্পটিও ব্যবহার করতে পারেন , কাপ্যাক তার উত্তরে উল্লিখিত :
"ইজারা" দিয়ে জোর করে চাপ দেওয়ার ফলে আপনি যে রিমোটের প্রত্যাশা করেননি এমন নতুন কমিটস রয়েছে তবে (প্রযুক্তিগতভাবে, যদি আপনি তাদের এখনও আপনার রিমোট-ট্র্যাকিং শাখায় না নিয়ে থাকেন) জোর করে ধাক্কাটি ব্যর্থ করতে দেয়, যা কার্যকর যদি আপনি দুর্ঘটনাক্রমে অন্য কারওর কমান্ডগুলি ওভাররাইট করতে চান না যে আপনি এখনও জানেন না, এবং আপনি কেবল নিজের নিজের ওভাররাইট করতে চান:
git push <remote> <branch> --force-with-lease
নীচের যে কোনওটি পড়ে আপনি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও বিশদ জানতে পারবেন --force-with-lease
:
git push origin --force
জন্য কাজ করে না?