আমি উদ্বিগ্ন যে পরের বার যখন আমার প্রয়োজন হবে তখন আমি এই নিফটির বৈশিষ্ট্যটি ভুলে যেতে পারি।
Git 2.13 (Q2 এর 2017) ব্যাখ্যা দিয়েছে কেন সেখানে এই ধাক্কা বিকল্প বিরুদ্ধে কোনো "সুরক্ষা", বিস্মৃত হচ্ছে কারণ এমনকি যদি আপনি না এটা ভুলবেন git pushস্তর, এটা এখনও উপেক্ষিত হতে পারে।
Commitভর আরনফজুরি বজরমসন ( ) দ্বারা f17d642 (19 এপ্রিল 2017) কমিট দেখুন । (দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট 46bdfa3 26 এপ্রিল 2017)avar
gitster
push: --force-with-leaseএকাধিক রিমোটগুলির সাথে দস্তাবেজ এবং পরীক্ষা
একই URL টিতে দুটি রিমোট দেখানো মামলার জন্য দস্তাবেজ এবং পরীক্ষা, এবং একটি ব্যাকগ্রাউন্ড আনার এবং git push --force-with-leaseপরবর্তীগুলিতে ক্লোবারকে আপডেট করা উচিত নয় এমন আপডেট হওয়া উল্লেখগুলি পাওয়া যায় না।
মাইক্রোসফ্টের ভিএসসির মতো কিছু সম্পাদকের পটভূমিতে স্বয়ংক্রিয়ভাবে আনার বৈশিষ্ট্য রয়েছে, এটি --force-with-lease& র দ্বারা প্রদত্ত সুরক্ষাগুলি বাইপাস করে--force-with-lease=<refname> , যেমন এখানে যুক্ত করা ডকুমেন্টেশনে উল্লিখিত হয়েছে।
সুতরাং এখনকার ডকুমেন্টেশনেরgit push মধ্যে রয়েছে:
সুরক্ষার বিষয়ে সাধারণ নোট: প্রত্যাশিত মান ব্যতীত এই বিকল্পটি সরবরাহ করা, যেমন --force-with-leaseবা পটভূমিতে ধাক্কা দেওয়ার জন্য দূরবর্তীটিতে
স্পষ্টভাবে --force-with-lease=<refname>
চলমান যে কোনও কিছু দিয়ে খুব খারাপভাবে ইন্টারঅ্যাক্ট করে git fetch, যেমন git fetch originক্রোনজবগুলিতে আপনার সংগ্রহশালায়।
এটি --forceপ্রদত্ত সুরক্ষাটি নিশ্চিত করছে যে পরবর্তী কাজগুলি আপনার কাজের ভিত্তিতে ছিল না আঁটসাঁট পোশাক নয়, তবে কিছু ব্যাকগ্রাউন্ড প্রক্রিয়া যদি ব্যাকগ্রাউন্ডে রেফগুলি আপডেট করে তবে এটি তুচ্ছভাবে পরাস্ত হবে। আমাদের কাছে রিমোট ট্র্যাকিংয়ের তথ্য ছাড়া আর কিছু নেই যা আপনি প্রত্যাশা করেছেন যে আপনি আঁকড়ে ধরেছেন এবং কুঁড়ি কাটাতে ইচ্ছুক রয়েছেন সেগুলির জন্য একটি হিউরিস্টিক হিসাবে যেতে পারে।
যদি আপনার সম্পাদক বা অন্য কোনও সিস্টেম git fetchআপনার জন্য ব্যাকগ্রাউন্ডে চলমান থাকে তবে এটি প্রশমিত করার উপায়টি কেবল অন্য একটি রিমোট সেটআপ করা:
git remote add origin-push $(git config remote.origin.url)
git fetch origin-push
এখন যখন পটভূমি প্রক্রিয়াটি চালিত হয় git fetch originতখন রেফারেন্সগুলি origin-pushআপডেট হবে না এবং এভাবে আদেশ দেয়:
git push --force-with-lease origin-push
ম্যানুয়ালি চালানো না হলে ব্যর্থ হবে git fetch origin-push।
এই পদ্ধতিটি অবশ্যই চলমান কিছু দ্বারা সম্পূর্ণ পরাজিত git fetch
--all, সে ক্ষেত্রে আপনাকে হয় এটি অক্ষম করতে হবে বা আরও ক্লান্তিকর কিছু করার দরকার আছে:
git fetch # update 'master' from remote
git tag base master # mark our base point
git rebase -i master # rewrite some commits
git push --force-with-lease=master:base master:master
baseঅর্থাত্ প্রবাহিত কোডের সংস্করণগুলির জন্য একটি ট্যাগ তৈরি করুন যা আপনি দেখেছেন এবং ওভাররাইট করতে ইচ্ছুক, তারপরে ইতিহাস পুনরায় লিখুন এবং শেষ পর্যন্ত আপনার স্থানীয়টিতে যা আপডেট হয়েছে তা নির্বিশেষে masterরিমোট সংস্করণটি এখনও রয়েছে কিনা তাতে চাপ চাপ দিন পটভূমি।baseremotes/origin/master
rmকরার মতোrm -i; আপনি ভুলে যাবেন এবং কোনও দিন কোনও সার্ভারে একটি গুরুত্বপূর্ণ ফাইল মুছবেন। আপনার নিজের ওরফে সাথে যেতে সমস্যা হয় না :)