این دستور git-merge-base است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
git-merge-base - تا حد امکان اجداد مشترک خوبی را برای ادغام پیدا کنید
خلاصه
دستگاه گوارش ادغام پایه [-a|--همه] ...
دستگاه گوارش ادغام پایه [-a|--همه] --اختاپوس ...
دستگاه گوارش ادغام پایه اجداد -- است
دستگاه گوارش ادغام پایه --مستقل ...
دستگاه گوارش ادغام پایه ---نقطه چنگال [ ]
شرح
دستگاه گوارش ادغام پایه بهترین اجداد مشترک را بین دو متعهد برای استفاده در سه جهت پیدا می کند
ادغام. یکی از اجداد مشترک است بهتر اگر جد مشترک دیگری باشد
جد سابق جد مشترکی که جد مشترک بهتری ندارد
a بهترین مشترک اجداد، یعنی الف ادغام کردن پایه. توجه داشته باشید که می تواند بیش از یک پایه ادغام وجود داشته باشد
برای یک جفت تعهد
عمل حالت ها
به عنوان رایج ترین مورد خاص، مشخص کردن تنها دو commit در خط فرمان به معنی است
محاسبه پایه ادغام بین دو commit داده شده.
به طور کلی، از بین دو تعهد برای محاسبه پایه ادغام، یکی با مشخص شده است
اولین آرگومان commit در خط فرمان. تعهد دیگر یک (احتمالا
فرضی) commit که ادغام تمام commit های باقی مانده در خط فرمان است.
به عنوان یک نتیجه ، ادغام کردن پایه لزوماً در هر یک از تعهدات موجود نیست
اگر بیش از دو commit مشخص شده باشد، آرگومان می شود. این با git-show-
شاخه(1) هنگامی که با گزینه --merge-base استفاده می شود.
--اختاپوس
محاسبه بهترین اجداد مشترک همه commit های ارائه شده، در آماده سازی برای n-way
ادغام. این رفتار را تقلید می کند دستگاه گوارش شعبه نمایش ---merge-base.
--مستقل
به جای چاپ پایه های ادغام، حداقل زیرمجموعه ای از commit های ارائه شده را چاپ کنید
همان اجداد به عبارت دیگر، در میان تعهدات داده شده، مواردی را که نمی توانند ذکر کنید
از هر دیگری قابل دسترسی باشد. این رفتار را تقلید می کند دستگاه گوارش شعبه نمایش --مستقل.
اجداد -- است
بررسی کنید که آیا اولین جد دوم است و با آن خارج شوید
وضعیت 0 اگر درست است، یا با وضعیت 1 اگر نه. خطاها با وضعیت غیر صفر نشان داده می شوند
که 1 نیست.
---نقطه چنگال
نقطه ای را پیدا کنید که یک شاخه (یا هر سابقه ای که به آن منتهی می شود ) دوشاخه شده از
شعبه دیگر (یا هر مرجع) . این فقط به دنبال موارد مشترک نیست
اجداد دو متعهد، بلکه به حساب reflog از برای دیدن اگر
تاریخ منتهی به از تجسم قبلی شاخه جدا شده است
(به بحث در مورد این حالت در زیر مراجعه کنید).
OPTIONS
-a، --همه
خروجی همه پایه های ادغام برای commit ها، به جای تنها یک.
بحث
با توجه به دو commit A و B، git merge-base AB یک commit را خروجی می دهد که از طریق آن قابل دسترسی است
هر دو A و B از طریق رابطه والدین
به عنوان مثال، با این توپولوژی:
o---o---o---B
/
---o---1---o---o---o---ا
پایه ادغام بین A و B is 1.
با توجه به سه commit A, B و C، git merge-base ABC پایه ادغام بین را محاسبه می کند A
و یک تعهد فرضی M، که ادغام بین است B و C. مثلا با این
توپولوژی:
o---o---o---o---C
/
/ o---o---o---B
/ /
---2---1---o---o-------ا
نتیجه git merge-base ABC است 1. این به این دلیل است که توپولوژی معادل با a
ادغام تعهد M میان B و C است:
o---o---o---o---o
/\
/ o---o---o---o---م
/ /
---2---1---o---o-------ا
و نتیجه git merge-base AM است 1. مرتکب شدن 2 همچنین یک جد مشترک بین A
و M، اما 1 جد مشترک بهتری است، زیرا 2 اجدادی است 1. از این رو، 2 نمی باشد
پایه ادغام
نتیجه git merge-base --octopus ABC است 2، به دلیل 2 بهترین جد مشترک است
از همه تعهدات
وقتی تاریخچه شامل ادغام متقاطع باشد، ممکن است بیش از یک مورد وجود داشته باشد بهترین مشترک
اجداد برای دو تعهد به عنوان مثال، با این توپولوژی:
---1---o---الف
\ /
X
/\
---2---o---o---B
هر دو 1 و 2 پایه های ادغام A و B هستند. هیچ کدام بهتر از دیگری نیستند (هر دو هستند
بهترین ادغام پایه ها). وقتی گزینه --all داده نمی شود، مشخص نمی شود که کدام بهترین است
خروجی.
یک اصطلاح رایج برای بررسی «سریع به جلو بودن» بین دو تعهد A و B این است (یا حداقل
قبلاً بود) برای محاسبه پایه ادغام بین A و B، و بررسی کنید که آیا همان A است،
در این صورت، A یکی از اجداد B است. این اصطلاح اغلب در خطهای قدیمیتر استفاده میشود.
A=$(git rev-parse --verify A)
if test "$A" = "$(git merge-base AB)"
سپس
... A اجداد B است ...
fi
در گیت مدرن، می توانید این را به روشی مستقیم تر بگویید:
if git merge-base --is-جدی AB
سپس
... A اجداد B است ...
fi
به جای آن.
بحث ON FORK-POINT MODE
پس از کار بر روی شاخه موضوع ایجاد شده با git checkout -b topic origin/master،
تاریخچه مبدا/استاد شاخه ردیابی از راه دور ممکن است دوباره بچرخد و بازسازی شده باشد که منجر به این امر شده است
به تاریخچه ای از این شکل:
o---B1
/
---o---o---B2--o---o---o---B (مبداء/استاد)
\
B3
\
مشتق شده (موضوع)
جایی که مبدا/مستر قبلا به commit های B3، B2، B1 اشاره می کرد و اکنون به B اشاره می کند و شما
زمانی که مبدا/مستر در B3 بود، شاخه موضوع در بالای آن شروع شد. این حالت استفاده می کند
reflog مبدا/مستر برای یافتن B3 به عنوان نقطه انشعاب، به طوری که موضوع می تواند دوباره پایه گذاری شود
در بالای مبدا/مستر به روز شده توسط:
$ fork_point=$(git merge-base --fork-point origin/master topic)
$ git rebase --onto origin/master $fork_point
با استفاده از خدمات onworks.net از git-merge-base به صورت آنلاین استفاده کنید