Pokazywanie, które pliki zostały zmienione między dwiema wersjami

Chcę połączyć dwie gałęzie, które zostały rozdzielone na jakiś czas i chcę wiedzieć, które pliki zostały zmodyfikowane.

Natknąłem się na ten link: http://linux.yyz.us/git-howto.html co było bardzo przydatne.

Narzędzia do porównywania gałęzi, z którymi się spotkałem to:

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

Zastanawiałem się, czy jest coś w stylu " Git status master..branch", aby zobaczyć tylko te pliki, które różnią się między sobą gałęzie.

Bez tworzenia nowego narzędzia, myślę, że jest to najbliższe, co możesz teraz zrobić (co oczywiście pokaże powtórzenia, jeśli plik został zmodyfikowany więcej niż raz):

  • git diff master..branch | grep "^diff"
Zastanawiałam się, czy coś mnie ominęło...
Author: jubobs, 2009-05-05

14 answers

Aby porównać bieżącą gałąź z master

$ git diff --name-status master

Aby porównać dowolną parę gałęzi

$ git diff --name-status firstbranch..yourBranchName
To powinno zrobić to, czego potrzebujesz, jeśli dobrze cię rozumiem.
 2233
Author: JasonSmith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-16 18:47:13

Try

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

To da ci więcej informacji o każdej zmianie, przy użyciu tej samej liczby wierszy.

Możesz także odwrócić gałęzie, aby uzyskać jeszcze wyraźniejszy obraz różnicy, jeśli chcesz połączyć się w inny sposób:

$ git diff --stat --color branchName..master
 359
Author: Gerry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-01 23:34:01

Należy również pamiętać, że git ma tanie i łatwe rozgałęzianie. Jeśli myślę, że połączenie może być problematyczne, tworzę gałąź dla połączenia. Jeśli więc master ma zmiany, które chcę scalić i {[2] } jest moją gałęzią, która potrzebuje kodu z master, mogę wykonać następujące czynności:

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
/ Align = "left" / Jeśli się zaplątam, mogę po prostu usunąć gałąź ba-merge i zacząć od nowa.
 146
Author: Eric Anderson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-11 01:22:19

Jeśli ktoś próbuje wygenerować plik diff z dwóch gałęzi:

git diff master..otherbranch > myDiffFile.diff
 45
Author: Paulino III,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-03 14:01:39

Zauważ, że git ułatwia po prostu wypróbowanie połączenia i wycofanie się z wszelkich problemów, jeśli nie podoba ci się wynik. Może to być łatwiejsze niż szukanie potencjalnych problemów z wyprzedzeniem.

 30
Author: David Plumpton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-05 00:59:54

Istnieje również metoda oparta na GUI.

Możesz użyć gitk .

  1. Run:

    $ gitk --all
    
  2. Kliknij prawym przyciskiem myszy commit gałęzi i wybierz zaznacz ten commit w menu podręcznym.

  3. Kliknij prawym przyciskiem myszy commit innej gałęzi i wybierz Diff this -> marked commit lub Diff marked commit - > this.

Następnie w prawym dolnym panelu pojawi się lista zmienionych plików, a szczegóły różnic w lewy dolny panel.

 29
Author: Shawn Xie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-10 22:15:11

Jeszcze jedna opcja, używając w tym przypadku meld:

git difftool -d master otherbranch

Pozwala to nie tylko zobaczyć różnice między plikami, ale także zapewnia łatwy sposób wskazywania i klikania określonego pliku.

 27
Author: rsilva4,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-24 13:23:31

Podczas pracy zespołowej lub nad wieloma funkcjami naraz, często zdarza się, że upstream lub nawet master zawiera pracę, która nie jest dołączona do Twojej gałęzi i będzie nieprawidłowo wyświetlana w podstawowych różnicach.

Jeśli Twój Upstream mógł się przesunąć, powinieneś to zrobić:

git fetch
git diff origin/master...

Samo użycie Git diff master może zawierać lub nie zawierać istotnych zmian.

 14
Author: Alex Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-17 03:12:13

A jeśli szukasz zmian tylko wśród niektórych plików, to:

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

Branch1 jest opcjonalny, a Twoja bieżąca gałąź (gałąź, na której się znajdujesz) będzie domyślnie branch1, jeśli nie zostanie podana. e. g:

git diff master -- controller/index.js
 12
Author: Mannu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-30 18:38:37
 9
Author: Wim Deblauwe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-06 07:17:35

Istnieją dwie gałęzie powiedzmy

  • a (Branch on which you are working)
  • B (Inna gałąź, z którą chcesz porównać)

Będąc w gałęzi A możesz wpisać

git diff --color B

To da ci wyjście

Tutaj wpisz opis obrazka

Ważnym punktem na ten temat jest

  1. Tekst na Zielono jest wewnątrz obecny w gałęzi a

  2. Tekst w kolorze czerwonym jest obecny w gałęzi B

 4
Author: selftaught91,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-04 11:56:48

Jest tu wiele odpowiedzi, ale chciałem dodać coś, co zwykle używam. Jeśli jesteś w jednej z gałęzi, które chcesz porównać, zazwyczaj wykonuję jedną z następujących czynności. Ze względu na tę odpowiedź powiemy, że jesteśmy w naszej gałęzi drugorzędnej. W zależności od tego, jaki widok potrzebujesz w tym czasie będzie zależeć od tego, który wybierzesz, ale większość czasu używam drugiej opcji z dwóch. Pierwsza opcja może być przydatna, jeśli próbujesz przywrócić oryginalną kopię -- tak czy siak, obie wykonują swoją pracę!

Porównamy master do gałęzi, w której się znajdujemy (która jest drugorzędna), a oryginalny kod będzie dodanymi liniami, a nowy kod będzie uważany za usunięte linie

git diff ..master

Lub

To również porówna master do gałęzi, w której się znajdujemy (która jest drugorzędna) i oryginalnym kodem będą stare linie, a nowym kodem będą nowe linie

git diff master..
 3
Author: Jase,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-31 22:00:58

Jeśli podoba Ci się GUI i używasz systemu Windows, Oto prosty sposób.

  1. Pobierz WinMerge
  2. Sprawdź dwie gałęzie w różnych folderach
  3. Wykonaj porównanie folderów po folderze używając WinMerge. Możesz również łatwo dokonać modyfikacji, jeśli jedna z gałęzi jest tą, nad którą pracujesz.
 -1
Author: Marius Matioc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-19 23:21:20

Możesz również łatwo porównać gałęzie dla zmienionych plików, używając na przykład TortoiseGit . Wystarczy kliknąć na Przeglądaj Referencje i wybierz gałęzie, które chcesz porównać.

Na przykład, jeśli porównasz Twoją gałąź z master otrzymasz listę plików, które zostaną zmienione w master jeśli zdecydujesz się połączyć Twoją-gałąź z master.

Pamiętaj, że będziesz miał inny wynik, jeśli porównaj master z your-branch i your-branch z master.

 -3
Author: Piotr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-18 09:53:19