Naudodami „Git“, parodykite visus įsipareigojimus, kurie yra toje pačioje šakoje, bet ne kitą (-us)

Turiu filialą, kurį norėčiau ištrinti. Tačiau, prieš tai atlikdamas, noriu patikrinti, ar visi su šiuo sriegiu susiję tvirtinimai tam tikru momentu sujungti į kitą sriegį. Todėl norėčiau pamatyti, kad visi mano dabartiniame skyriuje padaryti įsipareigojimai, kurie nebuvo taikomi jokiam kitam filialui [arba, jei tai neįmanoma be tam tikrų scenarijų, kaip matyti visus įsipareigojimus viename filiale, kurie nebuvo taikomi į kitą nurodytą temą?].

383
10 нояб. nustatė sircolinton lapkričio 10 d 2009-11-10 23:17 '09 23:17 2009-11-10 23:17
@ 10 atsakymų

Tikriausiai tik norite

 git branch --contains branch-to-delete 

Čia bus išvardinti visi filialai, kuriuose yra „filialo-ištrinti“. Jei jis praneša daugiau nei „filialas ištrinti“, filialas buvo sujungtas.

Jūsų alternatyvos yra tik reverso sintaksė. pavyzdžiui, git log one-branch..another-branch rodo, kad one-branch turėtų turėti visą another-branch .

Galbūt jus domina git show-branch kad sužinotumėte, kur.

254
10 нояб. Atsakymas pateikiamas Dustin 10 lapkričio. 2009-11-10 23:26 '09 11:26 pm 2009-11-10 23:26

Jei norite pamatyti vieno filialo, bet ne kitame, įsipareigojimų sąrašą, naudokite git žurnalą:

 git log --no-merges oldbranch ^newbranch 

tai yra, parodyti visų senosios filialo įsipareigojimų, kurie nėra naujuoju filialu, įsipareigojimo žurnalus. Galite įtraukti keletą filialų įtraukimui ir išskyrimui, pvz.,

border=0
 git log --no-merges oldbranch1 oldbranch2 ^newbranch1 ^newbranch2 

Pastaba: sistemoje „Windows“ tai yra evakuavimo raktas, todėl jį turi pabėgti kitas ^ :

 git log --no-merges oldbranch ^^newbranch 
456
17 нояб. Atsakymą pateikė jimmyorr 17 lapkritis 2010-11-17 20:15 '10, 20:15, 2010-11-17 20:15

Jei norite rodyti įsipareigojimus senojoje šakoje, bet ne naujoje šakoje:

 git log newbranch..oldbranch 

Jei norite rodyti skirtumus naudojant šiuos įsipareigojimus (atkreipkite dėmesį, kad yra trys taškai):

 git diff newbranch...oldbranch 

Čia yra dokumentas su https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection#Commit-Ranges

66
21 февр. Atsakymas pateikiamas Xuan 21 vasario mėn. 2014-02-21 15:25 '14, 15:25 2014-02-21 15:25

Nors kai kurie čia pateikti atsakymai padės jums rasti tai, ko ieškote, šis git filialo pakomitetis yra geresnis jūsų problemos sprendimas.

- kartu naudojama visų šakų, kurias galima saugiai ištrinti, paieška, nes šie filialai yra visiškai HEAD.

master galite paleisti komandą, kurioje išvardijamos šakos, kurias galima saugiai ištrinti, pavyzdžiui:

 git branch --merged develop fpg_download_links * master master_merge_static # Delete local and remote tracking branches you don't want git branch -d fpg_download_links git push origin :fpg_download_links git branch -d master_merge_static git push origin :master_merge_static # There is also a flag to specify remote branches in the output git branch --remotes --merged 
49
05 янв. Atsakymą pateikė Freddie Jan 05 2011-01-05 10:53 '11 at 10:53 2011-01-05 10:53

Tiems, kurie vis dar ieško paprasto atsakymo, žr. Jis lygina faktinius skirtumus, o ne atliekant hash. Tai reiškia, kad jame yra įrašų, kuriuos pasirinko arba apdorojo vyšnios.

Pirmiausia patikrinkite filialą, kurį norite ištrinti:

git checkout [branch-to-delete]

tada naudokite git cherry, kad palygintumėte jį su pagrindine plėtros dalimi:

git cherry -v master

Išvesties pavyzdys:

 + 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message + b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message - 85867e38712de930864c5edb7856342e1358b2a0 Yet another message 

Pastaba -v vėliava turėtų apimti įsipareigojimo pranešimą kartu su SHA maišytuvu.

Eilutės su simboliu „+“ yra priešais, bet ne pagrindiniame skyriuje. Tie, kurie „-“ priekyje turi lygiavertį įsitvirtinimą šeimininke.

JUST įsipareigoja, kad nėra pagrindinės, sujungite vyšną su grep:

git cherry -v master | grep "^\+"

Išvesties pavyzdys:

 + 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message + b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message 
44
15 окт. Tim S atsakymas, pateiktas spalio 15 d 2015-10-15 02:38 '15 at 2:38 2015-10-15 02:38

„Jimmyorr“ atsakymas neveikia „Windows“ sistemoje. ji padeda naudoti --not ne vietoj ^ panašaus:

 git log oldbranch --not newbranch --no-merges 
14
18 июня '15 в 11:59 2015-06-18 11:59 atsakymas pateikiamas sebeckui birželio 18 d., 15 val. 11:59 2015-06-18 11:59

Jei šis filialas yra vienintelis, kurį reikia patikrinti, pavyzdžiui, jei norite, kad filialas „B“ būtų visiškai sujungtas su filialu „A“, galite tiesiog atlikti šiuos veiksmus:

 $ git checkout A $ git branch -d B 

git branch -d <branchname> turi saugumą, kad „filialas turi būti visiškai sujungtas į HEAD“.

Atminkite, kad tai iš tikrųjų panaikina filialą, jei jis sujungtas,

7
11 нояб. Jakub Narębski atsakymas lapkričio 11 d 2009-11-11 01:00 '09, 1:00 2009-11-11 01:00

Šį paprastą scenarijų galite naudoti norėdami peržiūrėti įsipareigojimus, kurie nėra sujungti.

 #!/bin/bash # Show commits that exists only on branch and not in current # Usage: # git branch-notmerge <branchname> # # Setup git alias # git config alias.branch-notmerge [path/to/this/script] grep -Fvf <(git log --pretty=format:'%H - %s') <(git log $1 --pretty=format:'%H - %s') 

Taip pat galite naudoti įrankį git-wtf , kuriame rodoma filialų būsena.

3
30 мая '12 в 16:22 2012-05-30 16:22 atsakymas pateikiamas manRo gegužės 30 d., 12 val. 16:22 2012-05-30 16:22

Jei norite nurodyti trūkstamus įsipareigojimus tarp dviejų filialų, galite naudoti palyginimą -branches.py

https://bitbucket.org/aakef/compare-git-branches

-1
19 марта '14 в 20:03 2014-03-19 20:03 atsakymą pateikė Bernd Schubert , kovo 19 d. 14 d. 20:03 2014-03-19 20:03

Sukurkite traukos užklausą naudodami naudojamą „git“ prieglobos paslaugą. Jei filialas yra visiškai sujungtas į pagrindinį filialą, negalėsite sukurti naujo PR.

Pavyzdžiui, „GitHub“:

Nėra nieko palyginamos

2019

Kiti klausimai apie arba Užduoti klausimą