git-merge-base - Online sa Cloud

Ito ang command na git-merge-base na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


git-merge-base - Maghanap ng mahusay na karaniwang mga ninuno hangga't maaari para sa isang pagsasama

SINOPSIS


pumunta merge-base [-a|--lahat] ...
pumunta merge-base [-a|--lahat] --octopus ...
pumunta merge-base --ay-ninuno
pumunta merge-base --independyente ...
pumunta merge-base --titik ng tinidor [ ]

DESCRIPTION


pumunta merge-base nakakahanap ng pinakamahusay na karaniwang (mga) ninuno sa pagitan ng dalawang commit na gamitin sa isang three-way
pagsamahin. Ang isang karaniwang ninuno ay mas mabuti kaysa sa isa pang karaniwang ninuno kung ang huli ay isang
ninuno ng dating. Ang isang karaniwang ninuno na walang mas mahusay na karaniwang ninuno ay
a pinakamahusay pangkaraniwan ninuno, ibig sabihin, a pagsamahin base. Tandaan na maaaring mayroong higit sa isang merge base
para sa isang pares ng mga pangako.

OPERASYON mode


Bilang ang pinakakaraniwang espesyal na kaso, ang pagtukoy lamang ng dalawang commit sa command line ay nangangahulugan
pag-compute ng merge base sa pagitan ng ibinigay na dalawang commit.

Sa pangkalahatan, kabilang sa dalawang commit na kalkulahin ang merge base mula sa, ang isa ay tinukoy ng
ang unang commit argument sa command line; ang isa pang commit ay isang (maaaring
hypothetical) commit na isang merge sa lahat ng natitirang commit sa command line.

Bilang kinahinatnan, ang pagsamahin base ay hindi kinakailangang nakapaloob sa bawat isa sa commit
argumento kung higit sa dalawang commit ang tinukoy. Ito ay naiiba sa git-show-
sangay(1) kapag ginamit kasama ang --merge-base na opsyon.

--pugita
Kalkulahin ang pinakamahusay na karaniwang mga ninuno ng lahat ng ibinigay na mga pangako, bilang paghahanda para sa isang n-way
pagsamahin. Ginagaya nito ang pag-uugali ng pumunta show-branch --merge-base.

--independyente
Sa halip na mag-print ng mga merge base, mag-print ng kaunting subset ng ibinigay na mga commit
ang parehong mga ninuno. Sa madaling salita, kabilang sa mga ibinigay na pangako, ilista ang mga hindi magagawa
maabot mula sa anumang iba pa. Ginagaya nito ang pag-uugali ng pumunta show-branch --independyente.

--ay-ninuno
Suriin kung ang una ay isang ninuno ng pangalawa , at lumabas kasama ang
status 0 kung totoo, o may status 1 kung hindi. Ang mga error ay sinenyasan ng isang hindi zero na katayuan
hindi yan 1.

--titik ng tinidor
Hanapin ang punto kung saan ang isang sangay (o anumang kasaysayan na humahantong sa ) sanga mula sa
ibang sangay (o anumang sanggunian) . Ito ay hindi lamang naghahanap ng karaniwan
ninuno ng dalawang commit, ngunit isinasaalang-alang din ang reflog ng upang makita kung
ang kasaysayan na humahantong sa sanga mula sa isang naunang pagkakatawang-tao ng sangay
(tingnan ang talakayan sa mode na ito sa ibaba).

Opsyon


-a, --lahat
I-output ang lahat ng merge base para sa mga commit, sa halip na isa lang.

Pagtalakay


Binigyan ng dalawang commit A at B, git merge-base AB ay maglalabas ng isang commit na maaabot mula sa
kapwa A at B sa pamamagitan ng relasyon ng magulang.

Halimbawa, sa topology na ito:

o---o---o---B
/
---o---1---o---o---o---A

ang merge base sa pagitan A at B is 1.

Nabigyan ng tatlong commit A, B at C, kukuwentahin ng git merge-base ABC ang merge base sa pagitan A
at isang hypothetical commit M, na isang pagsasanib sa pagitan B at C. Halimbawa, kasama nito
topology:

o---o---o---o---C
/
/ o---o---o---B
/ /
---2---1---o---o---o---A

ang resulta ng git merge-base ABC ay 1. Ito ay dahil ang katumbas na topology na may a
sumanib gumawa M sa pagitan ng B at C ay:

o---o---o---o---o
/
/ o---o---o---o---M
/ /
---2---1---o---o---o---A

at ang resulta ng git merge-base AM ay 1. Mangako 2 ay isa ring karaniwang ninuno sa pagitan A
at M, Ngunit 1 ay isang mas mahusay na karaniwang ninuno, dahil 2 ay isang ninuno ng 1. Samakatuwid, 2 ay hindi isang
pagsamahin ang base.

Ang resulta ng git merge-base --octopus ABC ay 2, Dahil 2 ay ang pinakamahusay na karaniwang ninuno
sa lahat ng commit.

Kapag ang kasaysayan ay nagsasangkot ng criss-cross merges, maaaring magkaroon ng higit sa isa pinakamahusay pangkaraniwan
ninuno para sa dalawang commit. Halimbawa, sa topology na ito:

---1---o---A
\ /
X
/
---2---o---o---B

kapwa 1 at 2 ay merge-bases ng A at B. Wala alinman sa isa ay mas mahusay kaysa sa isa (pareho ay
pinakamahusay pagsamahin ang mga base). Kapag ang --all na opsyon ay hindi ibinigay, hindi natukoy kung alin ang pinakamahusay
output.

Ang isang karaniwang idyoma upang suriin ang "fast-forward-ness" sa pagitan ng dalawang commit A at B ay (o hindi bababa sa
dating) upang kalkulahin ang merge base sa pagitan ng A at B, at suriin kung ito ay pareho sa A,
kung saan, ang A ay isang ninuno ng B. Makikita mo ang idyoma na ito na madalas na ginagamit sa mas lumang mga script.

A=$(git rev-parse --verify A)
kung pagsubok "$A" = "$(git merge-base AB)"
pagkatapos
... Si A ay ninuno ni B ...
fi

Sa modernong git, masasabi mo ito sa mas direktang paraan:

kung git merge-base --is-ancestor AB
pagkatapos
... Si A ay ninuno ni B ...
fi

sa halip.

Pagtalakay ON FORK-POINT MODE


Pagkatapos magtrabaho sa sangay ng paksa na nilikha gamit ang git checkout -b pinanggalingan/master ng paksa, ang
kasaysayan ng remote-tracking branch pinagmulan/master ay maaaring rewound at itinayong muli, nangunguna
sa isang kasaysayan ng ganitong hugis:

o---B1
/
---o---o---B2--o---o---o---B (pinagmulan/panginoon)

B3

Hinango (paksa)

kung saan ang pinanggalingan/master ay dating tumuturo sa commit B3, B2, B1 at ngayon ito ay tumuturo sa B, at ang iyong
Ang sangay ng paksa ay nagsimula sa ibabaw nito noong ang pinanggalingan/master ay nasa B3. Ginagamit ng mode na ito
ang reflog ng pinanggalingan/master upang mahanap ang B3 bilang ang tinidor point, upang ang paksa ay maaaring rebase
sa itaas ng na-update na pinagmulan/master ni:

$ fork_point=$(git merge-base --fork-point origin/master topic)
$ git rebase --sa pinanggalingan/master $fork_point na paksa

Gumamit ng git-merge-base online gamit ang mga serbisyo ng onworks.net



Pinakabagong Linux at Windows online na mga programa