Zobacz różnice gałęzi z meld?
Wiem, że mogę zobaczyć różnicę między głową a aktualnym stanem za pomocą meld .
. Ale jak Mogę zobaczyć różnice między gałęziami, na przykład master
i devel
z meld?
W tej chwili wykonuję następujące kroki:
- Zmień nazwę folderu kopii roboczej
Na przykładmv /projectA /projectA_master
) - Klonuj projekt ponownie
git clone url
- Przełącz na
devel
Oddziałcd projectA && git -b devel origin/devel
- Zobacz różnice z meld
meld /projectA_Master projectA
Isn ' t there an łatwiejszy sposób na uzyskanie tego samego wyniku w meld? Potrzebuję go tylko do przeglądu zmian, a nie przede wszystkim do scalania.
8 answers
Ten problem również mnie denerwował, więc zrobiłem git meld, który pozwala na wygodniejszy sposób różnicowania arbitralnych commitów względem drzewa roboczego lub obszaru postoju. Znajdziesz go pod adresem https://github.com/wmanley/git-meld . Jest to trochę jak skrypt marka, ale działa do porównywania dowolnych zatwierdzeń, przestrzeni postojowej lub katalogu roboczego z innymi. Jeśli jedną z rzeczy, z którymi porównujesz, jest drzewo robocze, to jest to również odczyt-zapis, więc nie pozbądź się zmian.
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
2010-11-30 09:24:41
Short & sweet:
git config --global diff.tool meld
To skonfiguruje Git do używania meld
jako narzędzia diff. (Nie musisz podawać argumentów wiersza poleceń, wsparcie dla meld
jest wbudowane w Git.)
Następnie, jeśli chcesz graficznego różnicowania zamiast tekstowego, po prostu wywołaj git difftool
zamiast git diff
(obie przyjmują te same argumenty). W Twoim przypadku:
git difftool master..devel
Update: jeśli nie chcesz rozróżniać jeden plik na raz, ale zamiast tego chcesz użyć widoku "podkatalogu" meld z wszystkimi zmiany między dwiema gałęziami, zwróć uwagę na opcję -d
lub --dir-diff
dla git difftool
. Na przykład, gdy jestem na gałęzi XYZ i chcę zobaczyć, czym różni się to od gałęzi ABC, uruchamiam to:
git difftool -d ABC
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
2015-03-10 11:13:30
Począwszy od git v1. 7.11, możesz użyć git difftool --dir-diff
do wykonania rozróżnienia katalogów. Który działa całkiem dobrze z meld wihout https://github.com/wmanley/git-meld Skrypty.
Configure git
git config --global diff.tool meld
Użyj go
git difftool -d topic // -d is --dir-diff
git difftool -d master..topic
Dla macOS
brew cask install meld
git config --global difftool.meld.cmd 'open -W -a Meld --args \"$LOCAL\" \"$PWD/$REMOTE\"'
git config --global difftool.meld.trustExitCode true
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-27 04:26:40
Ważne jest, aby powiedzieć, że używając git difftool -d
możesz nadal edytowaćswoje pliki robocze w Meld i zapisać je. Aby to osiągnąć, musisz porównać jakąś gałąź z bieżącym drzewem roboczym, na przykład:
git difftool -d branchname
Meld pokaże, że zarówno lewy jak i prawy katalog znajduje się w /tmp. Jednak pliki w odpowiednim katalogu są w rzeczywistości dowiązaniami symbolicznymi do plików w bieżącym katalogu roboczym (Nie dotyczy systemu Windows). Więc możesz je edytować bezpośrednio w Meld i po ich zapisaniu twoje zmiany zostaną zapisane w katalogu roboczym.
Jeszcze ciekawszą opcją jest porównanie bieżącego katalogu roboczego ze stashem. Możesz to zrobić po prostu wpisując:
git difftool -d stash
Następnie możesz przenieść pewne zmiany ze schowka (lewe okno) do bieżącej kopii roboczej (prawe okno), bez używania git stash pop/apply
i unikania kłopotliwego rozwiązywania konfliktów, które mogą być wywołane przez te polecenia.
Myślę, że może znacznie zwiększyć przepływ pracy z stashes. Możesz stopniowo przenosić zmiany ze skrytki do kopii roboczej i zatwierdzać je jeden po drugim, wprowadzając kolejne zmiany, jeśli chcesz.
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-08-16 01:45:12
Chociaż z pozostałych odpowiedzi wydaje się, że nie ma na to obecnie sposobu, aby to zrobić bezpośrednio w repozytorium git, łatwo jest (dzięki odpowiedzi na kolejne pytanie :)) napisać skrypt, który wyodrębni drzewa dwóch commitów do katalogów tymczasowych i uruchomi na nich meld, usuwając oba katalogi po zakończeniu meld:
Oczywiście stracisz wszelkie zmiany wprowadzone przez meld, ale jest to całkiem miłe dla szybkiego przeglądu myślę, że o różnicach.
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-23 11:47:05
Myślę, że łatwym sposobem na to jest użycie git reset --soft
:
Cel: porównaj różnice między branch_a i branch_b z meld
git checkout branch_a
git checkout -b do_diff
git reset --soft branch_b
meld .
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
2011-12-15 17:48:42
W git V1. 7. 9 Możesz porównać dwa commity bez wiersza poleceń:
Musisz skonfigurować w 'Git gui' opcje edycji, globalne: "Use merge tool: meld".
Uruchom gitk, Wybierz commit, kliknij prawym przyciskiem myszy inny commit > " diff this -- > selected ". W polu 'patch' kliknij prawym przyciskiem myszy plik > " external diff ".
Meld uruchomi i wyświetli wciąż wybrany, pierwszy commit po prawej stronie.
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-02-03 21:46:54
Jeśli masz czysty katalog roboczy i czysty indeks (lub nie dbasz o to), to to czego chcesz:
git diff master..devel | patch -p1 && meld . && git reset --hard
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-11-26 10:43:52