Parodykite, kurie failai pasikeitė tarp dviejų versijų.

Noriu sujungti du filialus, kurie buvo suskirstyti tam tikrą laiką, ir norėjau sužinoti, kurie failai buvo pakeisti.

Po šios nuorodos: http://linux.yyz.us/git-howto.html , kuris buvo labai naudingas.

Priemonių, kurias galėjau palyginti, filialai yra tokie:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

Įdomu, ar yra kažkas panašaus į „git status master..branch“, kad matytumėte tik tuos failus, kurie yra skirtingi tarp dviejų filialų.

Nesukuriant naujos priemonės, manau, kad tai yra artimiausias dalykas, kurį dabar galite padaryti (kuris, žinoma, parodys pasikartojimus, jei failas bus pakeistas daugiau nei vieną kartą):

  • git diff master..branch | grep "^diff"

Įdomu, ar yra kažkas, ką praleidau ...

1645
05 мая '09 в 3:47 2009-05-05 03:47 johannix paklausė 05 gegužės '09 at 3:47 2009-05-05 03:47
@ 14 atsakymų

Pabandykite

 $ git diff --name-status master..branchName 

Tai turėtų daryti tai, ko jums reikia, jei teisingai suprantu.

2010 m
05 мая '09 в 4:04 2009-05-05 04:04 Atsakykite į JasonSmith gegužės 05'09 val. 4:04 2009-05-05 04:04

Pabandykite

 $ git diff --stat --color master..branchName 

Tai suteiks jums daugiau informacijos apie kiekvieną pakeitimą, tuo pačiu metu naudojant tą patį skaičių linijų.

border=0

Taip pat galite apversti filialus, kad gautumėte dar aiškesnį skirtumo supratimą, jei turėtumėte sujungti kitą būdą:

 $ git diff --stat --color branchName..master 
335
09 февр. Atsakymą pateikė Gerry, vasario 9 d. 2011-02-09 22:38 '11, 10:38 val. 2011-02-09 22:38

Taip pat turėkite omenyje, kad git turi pigų ir lengvą šakutę. Jei manau, kad susijungimas gali būti problemiškas, sukuriu susijungimo šaką. Todėl, jei master turi pakeitimų, kuriuos noriu sujungti, o ba yra mano filialas, kuriam reikia vedlio kodo, galiu padaryti:

 git checkout ba git checkout -b ba-merge git merge master .... review new code and fix conflicts.... git commit git checkout ba git merge ba-merge git branch -d ba-merge git merge master 

Galutinis rezultatas yra tas, kad, prieš įsukant šaką, turiu pabandyti sujungti į lašas. Jei aš susibursiu, galiu tiesiog ištrinti ba-merge ir vėl pradėti.

136
11 окт. Erico Andersono atsakymas, pateiktas spalio 11 d 2012-10-11 04:22 '12 ne 4:22 2012-10-11 04:22

Jei kas nors bando sukurti skirtingą failą iš dviejų filialų:

 git diff master..otherbranch > myDiffFile.diff 
36
03 апр. Paulino III atsakymas 03 Bal. 2013-04-03 17:01 '13, 17:01, 2013-04-03 17:01

Taip pat yra metodas, pagrįstas grafine sąsaja.

Galite naudoti „ gitk“ .

  • Vykdyti:

     $ gitk --all 
  • Dešiniuoju pelės mygtuku spustelėkite filialą ir iškylančiajame meniu pasirinkite Pažymėti šį įvykį.

  • Dešiniuoju pelės klavišu spustelėkite kito filialo fiksavimą ir pasirinkite Diff this → pažymėtas užraktas arba pažymėtas pažymėtas įvykis → tai.

Tada apatiniame dešiniajame >

28
14 июня '13 в 9:01 2013-06-14 09:01 atsakymą pateikė „ Yantao Xie “ birželio 13 d. 13 val. 2013-01-14 09:01

Atkreipkite dėmesį, kad „git“ leidžia jums tiesiog pabandyti sujungti ir grįžti iš bet kokių problemų, jei jums nepatinka rezultatas. Tai gali būti lengviau nei iš anksto rasti galimų problemų.

28
05 мая '09 в 3:59 2009-05-05 03:59 atsakė Davidas Plumptonui gegužės 05'09 09:59 2009-05-05 03:59

Kitas variantas naudojant „meld“ šiuo atveju yra:

 git difftool -d master otherbranch 

Tai leidžia ne tik matyti skirtumus tarp failų, bet ir suteikia galimybę lengvai nukreipti ir paspausti konkretų failą.

24
24 апр. atsakymas pateikiamas rsilva4 24 balandžio. 2014-04-24 16:23 '14, 16:23, 2014-04-24 16:23

Dirbdami kartu arba naudojant keletą funkcijų vienu metu, dažniausiai atsitinka, kad kylantis arba net jūsų vedlys turi darbą, kuris nėra įtrauktas į jūsų filialą ir bus neteisingai rodomas pagrindiniuose skirtumuose.

Jei jūsų „Upstream“ gali būti perkeltas, turėtumėte tai padaryti:

 git fetch git diff origin/master... 

Paprastai naudojant „git“ „diff“ vedlį gali būti arba gali būti įtraukti atitinkami pakeitimai.

11
24 марта '15 в 6:21 2015-03-24 06:21 atsakymą pateikė Alexas Brownas kovo 15 d. 15, 15:21 2015-03-24 06:21

Jei naudojate „ IntelliJ IDEA“ , taip pat galite palyginti bet kurį filialą su dabartiniu darbo filialu. Daugiau informacijos ieškokite http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 . Tai yra nemokama versija .

7
06 июня '13 в 10:17 2013-06-06 10:17 atsakymą pateikė Wim Deblauwe birželio 13 d. 13 val. 10:17 2013-06-06 10:17

Ir jei ieškote pakeitimų tik tam tikriems failams, tada:

 git diff branch1 branch2 -- myfile1.js myfile2.js 

branch1 yra neprivalomas, o jūsų dabartinis filialas (filialas, kuriame esate) bus numatytas pagal nutylėjimą, jei filialas1 nebus pateiktas. pavyzdžiui:

 git diff master -- controller/index.js 
7
16 мая '16 в 16:13 2016-05-16 16:13 atsakymą Mannu pateikė 16 gegužės 16 d. 16:13 2016-05-16 16:13

Tiesiog pridėkite papildomą informaciją į JasonSmith atsakymą :

Šią komandą patikrinau savo siūlą:

$ git clone -b branchName http://repository_url

Tačiau siūloma git diff neveikė:

 $ git diff --name-status master..branchName fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' 

Ištyriau filialus po šios šakos :

 $ git branch * branchName $ git branch -a * branchName remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/branchName 

master filialo vietoje, todėl palyginau su remotes/origin/master :

 $ git diff --name-status remotes/origin/master..push . . . . . . . . . 

remotes/origin/master daugiau apie šioje temoje esančius remotes/origin/master .

2
02 июня '16 в 16:40 2016-06-02 16:40 atsakymas yra tik atsitiktinis vaikinas 02 birželio 16 d. 16:40 2016-06-02 16:40

Čia yra daug atsakymų, bet norėjau pridėti kažką, ką paprastai naudoju. Jei esate vienoje iš filialų, kuriuos norėtumėte palyginti, dažniausiai atlieku vieną iš šių veiksmų. Dėl šio atsakymo mes sakome, kad esame antrinėje pramonėje. Priklausomai nuo to, kokio tipo jums reikia tuo metu, tai priklausys nuo to, ką pasirinksite, tačiau dažniausiai naudoju antrąją šių dviejų versijų versiją. Pirmasis variantas gali būti naudingas, jei bandote grįžti į originalią kopiją - bet kuriuo atveju abi yra įvykdytos!

Tai padės palyginti vedlį su filialu, kuriame mes esame (antrinė), o šaltinis bus pridėtos eilutės, o naujasis kodas bus laikomas ištrintomis eilutėmis.

 git diff ..master 

Or

Taip pat bus lyginamas vedlys su filialu, kuriame mes esame (antrinė), o šaltinis bus senosios linijos, o naujasis kodas bus naujos eilutės.

 git diff master.. 
1
01 июня '17 в 1:00 2017-06-01 01:00 atsakymas duotas Jase birželio 17 d., 17 val. 01:00 2017-06-01 01:00

Yra du filialai:

  • A (filialas, kuriame dirbate)
  • B (Kitas siūlas, kurį norite palyginti su)

Kol filialas A, galite įvesti

 git diff --color B 

tada jis duos jums rezultatą

2019

04 окт. atsakymą pateikė selftaught91 04 oct. 2016-10-04 14:56 '16 at 14:56 pm 2016-10-04 14:56

Taip pat galite lengvai palyginti modifikuotų failų filialus, pvz., Naudojant „ TortoiseGit“ . Tiesiog spustelėkite Naršyti nuorodas ir pasirinkite filialus, kuriuos norite palyginti.

Pvz., Jei palyginsite savo filialą su kapitonu, gausite failų, kurie bus pakeisti šeimininke, sąrašą, jei nuspręsite sujungti savo filialą į šeimininką.

Atminkite, kad jūs turėsite kitokį rezultatą, jei palyginsite šeimininką su savo filialu ir filialu su šeimininku.

-1
18 окт. Atsakymą pateikė Piotr spalio 18 d. 2017-10-18 12:53 '17 12:53 2017-10-18 12:53

Kiti klausimai apie arba Ask a Question