Pokaži koje su datoteke izmijenjene između dvije verzije.

Želim spojiti dvije grane, koje su neko vrijeme bile podijeljene i htjele su znati koje su datoteke promijenjene.

Slijedio je ovaj link: http://linux.yyz.us/git-howto.html , što je bilo vrlo korisno.

Alati za uspoređivanje grana s kojima sam se susreo su sljedeći:

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

Pitam se postoji li nešto poput "git status master..branch" da bi vidjeli samo one datoteke koje se razlikuju između dvije grane.

Bez stvaranja novog alata, mislim da je ovo najbliže što možete učiniti sada (što će, naravno, prikazati ponavljanja ako je datoteka promijenjena više puta):

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

Pitam se postoji li nešto što sam propustio ...

1645
05 мая '09 в 3:47 2009-05-05 03:47 johannix pitao 05 svibanj '09 u 3:47 2009-05-05 03:47
@ 14 odgovora

probati

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

Ovo bi trebalo učiniti ono što vam je potrebno, ako vas dobro razumijem.

2010
05 мая '09 в 4:04 2009-05-05 04:04 Odgovorite na JasonSmith dana 05. svibnja u 4:04 2009-05-05 04:04

probati

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

To će vam dati više informacija o svakoj promjeni, dok u isto vrijeme koristite isti broj linija.

Također možete preklopiti grane da biste dobili još jasniju sliku razlike ako ste morali spojiti drugi način:

 $ git diff --stat --color branchName..master 
335
09 февр. Odgovor je dao Gerry 09. veljače. 2011-02-09 22:38 '11 u 10:38 pm 2011-02-09 22:38

Također imajte na umu da git ima jeftinu i jednostavnu vilicu. Ako mislim da spajanje može biti problematično, stvaram granu za spajanje. Stoga, ako master ima promjene koje želim spojiti, a ba je moja grana, kojoj je potreban kod čarobnjaka, mogu učiniti sljedeće:

 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 

Krajnji rezultat je da moram pokušati spojiti se na grani ispadanja prije nego što zavrtim svoju granu. Ako se sam saberem, mogu jednostavno izbrisati ba-merge granu i početi ispočetka.

136
11 окт. Odgovor dao je Eric Anderson 11. listopada 2012-10-11 04:22 '12 u 4:22 2012-10-11 04:22

Ako netko pokuša stvoriti diff datoteku iz dvije grane:

 git diff master..otherbranch > myDiffFile.diff 
36
03 апр. odgovor Paulino III 03. travnja. 2013-04-03 17:01 '13 u 17:01 2013-04-03 17:01

Tu je i metoda koja se temelji na grafičkom sučelju.

Možete koristiti gitk .

  • trčanje:

     $ gitk --all 
  • Desnom tipkom miša kliknite granu podjele i u skočnom izborniku odaberite Označi ovu obvezu.

  • Desnom tipkom miša kliknite fiksaciju druge grane i odaberite Diff this → označeno zasun ili Diff označeno urezivanje → ovo.

Zatim će se u donjem desnom oknu pojaviti popis izmijenjenih datoteka, a informacije će biti prikazane u donjem lijevom oknu.

28
14 июня '13 в 9:01 2013-06-14 09:01 odgovor je dao Yantao Xie 14. lipnja '13. u 9:01 2013-06-14 09:01

Imajte na umu da vam git omogućuje da jednostavno pokušate spojiti i vratiti se s bilo kakvih problema ako vam se ne sviđa rezultat. To može biti lakše nego pronalaženje potencijalnih problema unaprijed.

28
05 мая '09 в 3:59 2009-05-05 03:59 odgovorio je Davidu Plumptonu na Maj 05 '09 u 3:59 2009-05-05 03:59

Druga opcija koja se koristi u ovom slučaju je:

 git difftool -d master otherbranch 

To ne samo da vam omogućuje da vidite razlike između datoteka, nego i pruža jednostavan način usmjeravanja i klikanja na određenu datoteku.

24
24 апр. odgovor je dat rsilva4 24 travanj. 2014-04-24 16:23 '14 u 16:23 2014-04-24 16:23

Kada radite zajedno ili koristite nekoliko funkcija u isto vrijeme, obično se događa da čarobnjak za uzlazno ili čak i čarobnjak sadrži rad koji nije uključen u vašu granu i koji će biti pogrešno prikazan u osnovnim razlikama.

Ako se vaš Upstream možda preselio, učinite to:

 git fetch git diff origin/master... 

Jednostavno korištenjem git-a, čarobnjak za diff može ili ne mora uključivati ​​odgovarajuće izmjene.

11
24 марта '15 в 6:21 2015-03-24 06:21 odgovor je dao Alex Brown 24. ožujka 2006. u 6:21 2015-03-24 06:21

Ako koristite IntelliJ IDEA , možete također usporediti bilo koju granu s vašom trenutnom radnom granom. Za više informacija pogledajte http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 . To je dostupno u besplatnoj inačici .

7
06 июня '13 в 10:17 2013-06-06 10:17 odgovor je dao Wim Deblauwe 6. lipnja 2013. u 10:17 2013-06-06 10:17

A ako tražite promjene samo za određene datoteke, tada:

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

branch1 je opcionalan, a vaša trenutna grana (grana u kojoj se nalazite) bit će zadana ako se ne dostavi branch1. na primjer:

 git diff master -- controller/index.js 
7
16 мая '16 в 16:13 2016-05-16 16:13 odgovor je dao Mannu 16. svibnja u 16:13 2016-05-16 16:13

Jednostavno dodajte dodatne informacije u JasonSmith odgovor :

Ovom sam naredbom provjerio / la svoju nit:

$ git clone -b branchName http://repository_url

Međutim, predložena git diff nije funkcionirala:

 $ 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>...]' 

Istražio sam grane koje slijede ovu granu :

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

Nisam imao master poslovnicu lokalno, pa sam je usporedio s remotes/origin/master :

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

remotes/origin/master više o remotes/origin/master u ovoj niti .

2
02 июня '16 в 16:40 2016-06-02 16:40 odgovor je dat samo slučajnom tipu 02 Lipanj '16 u 16:40 2016-06-02 16:40

Ovdje ima mnogo odgovora, ali sam htio dodati nešto što obično koristim. Ako ste u jednoj od grana koje želite usporediti, ja obično radim jedno od sljedećeg. Radi ovog odgovora, kažemo da smo u našoj sekundarnoj industriji. Ovisno o vrsti koju trebate u to vrijeme, to će ovisiti o tome što odaberete, ali većinu vremena koristim drugu verziju ova dva. Prva opcija može biti korisna ako se pokušavate vratiti na izvornu kopiju - u svakom slučaju, oba se izvršavaju!

To će usporediti čarobnjaka s granom u kojoj se nalazimo (što je sekundarno), a izvorni kod će biti dodani redovi, a novi će se broj smatrati izbrisanim linijama.

 git diff ..master 

ILI

To će također usporediti čarobnjaka s granom u kojoj se nalazimo (što je sekundarno), a izvorni kod će biti stare linije, a novi će kod biti novi redovi.

 git diff master.. 
1
01 июня '17 в 1:00 2017-06-01 01:00 odgovor je Jase 01 lipanj '17 u 1:00 2017-06-01 01:00

Postoje dvije grane:

  • A (grana na kojoj radite)
  • B (Još jedna nit s kojom želite usporediti)

Dok ste u grani A, možete unijeti

 git diff --color B 

onda će vam dati rezultat

2019

04 окт. odgovor je dao selftaught91 04 okt. 2016-10-04 14:56 '16 u 14:56 2016-10-04 14:56

Također možete jednostavno usporediti grane za izmijenjene datoteke koristeći, na primjer, TortoiseGit . Samo kliknite Pregledaj veze i odaberite grane koje želite usporediti.

Na primjer, ako usporedite vaš ogranak s glavnim, dobit ćete popis datoteka koje će se promijeniti u glavnom, ako odlučite spojiti svoju granu u master.

Zapamtite da ćete imati drugačiji rezultat ako usporedite majstora s vašom podružnicom i vašom podružnicom s majstorom.

-1
18 окт. Odgovor je dao Piotr 18. listopada. 2017-10-18 12:53 '17 u 12:53 2017-10-18 12:53

Ostala pitanja u vezi ili Ask a Question