Mai mult
Având o comite id-ul, cum pentru a determina dacă această ramură conține comis-o?
Ceea ce am'm încercat să fac este o versiune a verifica. Vreau să asigure codul rămâne pe partea de sus de o versiune minimă. Deci am nevoie de o modalitate de a ști dacă ramura curentă conține o anumită comis-o.
115
6
Există mai multe modalități de a obține acest rezultat. Prima naiv opțiune este de a utiliza
git log
și de căutare pentru un anumit comite folosindgrep
, dar că nu este întotdeauna precisEsti mai bine să folosim git branch
direct pentru a găsi toate ramurile conțin dat
COMMIT_ID` folosindUrmătorul pas este de a afla ramură de curent care poate fi făcut din
git 1.8.1
folosindȘi combinate împreună, ca
Dar comanda de mai sus nu't return true sau false și nu există o versiune mai scurtă care returnează codul de ieșire 0 dacă se angajeze în actuala sucursală SAU cod de ieșire 1 dacă nu
Codul de ieșire este frumos, dar ca vrei șir de "adevărat" sau "fals" ca răspunsul de care ai nevoie pentru a adăuga un pic mai mult, și apoi combinate cu "dacă" din bash ai
Obține o listă de ramură(es) care conține specifice a comis-o.
Verificați dacă o ramură specifică a comis-o.
Căutare ramura (să zicem, "facilitate") cu potrivire exactă.
de exemplu Dacă aveți 3 filiale locale numite "facilitate",
feature1
,feature2
atunciPuteți căuta, de asemenea, în ambele "locale" și "la distanță" ramuri (use
-o
) sau numai în "la distanță" ramuri (use-r
).Extras comentariu de @torek ca raspuns:
Vezi propuse duplicat pentru modul de a găsi toate ramurile care conțin un anumit comis-o.
Pentru a afla dacă curent ramură conține comite C, utilizați "instalatii sanitare" comanda `git merge-de bază-este-strămoșilor. Ramura curentă conține C dacă C este un strămoș al CAPULUI, astfel:
(Notă: în scripturi shell, o comandă care iese zero este "adevărat" în timp ce unul care iese nenul este "false".)
Da o altă alternativă:
git rev-lista <nume de ramură> | grep `git rev-analiza <comit>`
Acest lucru funcționează cel mai bine pentru mine, deoarece s-ar lucra, de asemenea, pe plan local cache la distanță ramuri cum ar fi telecomenzi/origine/de master, pe care `git branch-conține câștigat't de lucru.Acesta acoperă mai mult de OP's întrebarea despre "curent branch" dar mi se pare de prost de a cere un "orice filială" versiune de această întrebare, așa că am decis pentru a posta aici, oricum.
Se va reveni la ținta nume de ramură dacă comite id-ul există în această ramură. În caz contrar, comanda nu va reuși.
Din această cauză are un frumos scripty răspunsuri, am'm adăugarea preferatele mele.
Acesta vă va arăta, pentru ultima
$n
se angajează în$br
ramuri care conține fiecare:Acesta este similar, dar nu la fel pentru o listă de filiale: