Це команда git-merge-base, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS
ПРОГРАМА:
ІМ'Я
git-merge-base - Знайдіть якомога хороших спільних предків для злиття
СИНТАКСИС
мерзотник злиття-база [-a|--все] ...
мерзотник злиття-база [-a|--все] --восьминіг ...
мерзотник злиття-база --є-предок
мерзотник злиття-база --незалежний ...
мерзотник злиття-база --точка вилки [ ]
ОПИС
мерзотник злиття-база знаходить найкращих спільних предків між двома комітами для використання в трьох напрямках
злитися. Один спільний предок краще ніж інший спільний предок, якщо останній є an
предок колишнього. Спільний предок, який не має кращого спільного предка
a кращий загальний предок, тобто a злиття база. Зауважте, що може бути більше однієї бази злиття
за пару комітів.
РОБОТА РЕЖИМИ
Як найпоширеніший окремий випадок, вказування лише двох комітів у командному рядку означає
обчислення бази злиття між цими двома комітами.
У більш загальному сенсі, серед двох фіксацій для обчислення бази злиття з одного вказується
перший аргумент фіксації в командному рядку; інший коміт - це (можливо
гіпотетичний) комміт, який є злиттям усіх інших комітів у командному рядку.
Як наслідок, злиття база не обов’язково міститься в кожному з комітів
аргументи, якщо вказано більше двох комітів. Це відрізняється від git-show-
філія(1) при використанні з опцією --merge-base.
-- восьминіг
Обчисліть найкращих спільних предків усіх наданих комітів, готуючись до n-шляху
злитися. Це імітує поведінку мерзотник шоу-філія --merge-base.
--незалежний
Замість того, щоб друкувати бази злиття, надрукуйте мінімальну підмножину наданих комітів
ті самі предки. Іншими словами, серед наданих комітів перелічіть ті, які не можуть
бути доступним з будь-якого іншого. Це імітує поведінку мерзотник шоу-філія --незалежний.
--є-предок
Перевірте, чи перший є предком другого , і вийдіть за допомогою
статус 0, якщо істинно, або зі статусом 1, якщо ні. Помилки сигналізуються ненульовим статусом
це не 1.
--точка вилки
Знайдіть точку, в якій гілка (або будь-яка історія, яка веде до ) роздвоєний з
інша гілка (або будь-яке посилання) . Це не просто пошук спільного
предком двох комітів, але також враховує reflog щоб побачити, якщо
історія, що веде до роздвоєний від більш раннього втілення гілки
(див. обговорення цього режиму нижче).
ВАРІАНТИ
-а, --усі
Вивести всі бази злиття для комітів, а не лише одну.
ОБГОВОРЕННЯ
Дано два коміти A та B, git merge-base AB виведе комміт, доступний з
обидва A та B через батьківські стосунки.
Наприклад, з такою топологією:
о---о---о---В
/
---о---1---о---о---о---А
база злиття між A та B is 1.
Дано три коміти A, B та C, git merge-base ABC обчислить базу злиття між A
і гіпотетична фіксація M, що є злиттям між B та C. Наприклад, з цим
топологія:
о---о---о---о---С
/
/ о---о---о---В
/ /
---2---1---о---о---о---А
результатом git Merge-base ABC є 1. Це тому, що еквівалентна топологія з a
об'єднати коміт M між B та C це:
о---о---о---о---о
/\
/ о---о---о---о---М
/ /
---2---1---о---о---о---А
і результатом git злиття-бази AM є 1. Здійснити 2 також є спільним предком між A
та M, Але 1 є кращим спільним предком, тому що 2 є предком Росії 1. Отже, 2 НЕ
база злиття.
Результатом git merge-base --octopus ABC є 2, Так як 2 є найкращим загальним предком
з усіх зобов'язань.
Коли історія включає перехресне злиття, їх може бути більше одного кращий загальний
предок для двох комітів. Наприклад, з такою топологією:
---1---о---А
\ /
X
/\
---2---о---о---В
обидва 1 та 2 є базами злиття A і B. Жодна з них не краща за іншу (обидва є
кращий бази злиття). Якщо параметр --all не вказано, не вказано, який з них найкращий
вихід.
Звичайна ідіома для перевірки "швидкості вперед" між двома комітами A і B (або принаймні
раніше), щоб обчислити базу злиття між A та B і перевірити, чи вона така сама, як A,
у цьому випадку A є предком B. Ви побачите, що ця ідіома часто використовується в старих сценаріях.
A=$(git rev-parse --verify A)
якщо тест "$A" = "$(git merge-base AB)"
потім
... А є предком В ...
fi
У сучасному git ви можете сказати це більш прямим способом:
якщо git merge-base --is-ancestor AB
потім
... А є предком В ...
fi
замість цього.
ОБГОВОРЕННЯ ON ВИЛКА-ТОЧКА РЕЖИМ
Після роботи над гілкою теми, створеною за допомогою git checkout -b topic origin/master, the
Історія дистанційного відстеження філії походження/головний, можливо, була перемотана та перебудована, провідна
до історії цієї форми:
o---B1
/
---o---o---B2--o---o---o---B (походження/основний)
\
B3
\
Похідне (тема)
де origin/master раніше вказував на коміти B3, B2, B1, а тепер він вказує на B, а ваш
тематична галузь була запущена поверх неї, коли origin/master був на B3. Цей режим використовує
reflog of origin/master, щоб знайти B3 як точку розгалуження, щоб тему можна було перебазувати
поверх оновленого джерела/основного за допомогою:
$ fork_point=$(git merge-base --fork-point origin/основна тема)
$ git rebase --onto origin/master $fork_point тема
Використовуйте git-merge-base онлайн за допомогою служб onworks.net