Wiem, że mogę zobaczyć różnicę między HEAD a obecnym stanem za pomocą meld .
. Ale jak mogę zobaczyć różnice między gałęziami, na przykład master
i devel
przy meldowaniu?
W tej chwili wykonuję następujące czynności:
- Zmień nazwę folderu kopii roboczej
Na przykładmv /projectA /projectA_master
) - Sklonuj projekt ponownie
git clone url
- Przełącz się na
devel
oddział
cd projectA && git -b devel origin/devel
- Zobacz różnice w połączeniu
meld /projectA_Master projectA
Czy nie ma prostszego sposobu na uzyskanie tego samego wyniku w połączeniu? Potrzebuję go tylko do przeglądu zmian, a nie przede wszystkim do scalania.
Odpowiedzi:
Ten problem również mnie denerwuje, więc stworzyłem git meld, który pozwala na wygodniejszy sposób odróżniania arbitralnych zatwierdzeń od drzewa roboczego lub obszaru przemieszczania. Możesz go znaleźć na https://github.com/wmanley/git-meld . To trochę jak skrypt Marka, ale działa do porównywania dowolnego zatwierdzenia, obszaru przemieszczania lub katalogu roboczego z dowolnym innym. Jeśli jedną z rzeczy, z którymi porównujesz, jest drzewo robocze, to jest to również odczyt i zapis, aby nie stracić zmian.
źródło
Krótkie i słodkie:
Spowoduje to skonfigurowanie Gita do użycia
meld
jako narzędzia porównywania. (Nie musisz określać argumentów wiersza poleceń, obsługameld
jest wbudowana w Git).Następnie, jeśli chcesz graficznego porównania zamiast tekstowego, po prostu wywołaj
git difftool
zamiastgit diff
(oba przyjmują te same argumenty). W Twoim przypadku:Aktualizacja: jeśli nie chcesz, aby różnica „jeden plik na raz” była używana, ale zamiast tego chcesz użyć widoku „podkatalogu” meld ze wszystkimi zmianami między dwoma gałęziami, zwróć uwagę na opcję
-d
lub . Na przykład, kiedy jestem w gałęzi XYZ i chcę zobaczyć, czym różni się ta od gałęzi ABC, uruchamiam to:--dir-diff
git difftool
źródło
Począwszy od git v1.7.11, możesz użyć
git difftool --dir-diff
do wykonania porównania katalogów. Co działa całkiem dobrze w przypadku połączeń bez skryptów https://github.com/wmanley/git-meld .Skonfiguruj git
Użyj tego
Dla macOS
źródło
Ctrl+s
- właściwą część, plik zostanie zmodyfikowany.Ważne jest, aby powiedzieć, że używając
git difftool -d
możesz nadal edytować swoje pliki robocze w Meld i je zapisywać . Aby to osiągnąć, musisz porównać jakąś gałąź z aktualnym drzewem roboczym, na przykład:Meld pokaże, że lewy i prawy katalog znajdują 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). Możesz więc edytować je bezpośrednio w Meld, a kiedy je zapiszesz, zmiany zostaną zapisane w katalogu roboczym.
Jeszcze ciekawszą opcją jest porównanie aktualnego katalogu roboczego ze skrytką. Możesz to zrobić, wpisując po prostu:
Następnie możesz przenieść niektóre zmiany ze skrytki (lewe okno) do aktualnej kopii roboczej (prawe okno), bez używania
git stash pop/apply
i unikania uciążliwego rozwiązywania konfliktów, które mogą być wywołane przez te polecenia.Myślę, że może znacznie przyspieszyć przepływ pracy ze skrytkami. Możesz stopniowo przenosić zmiany ze skrytki do kopii roboczej i zatwierdzać je pojedynczo, wprowadzając inne zmiany, jeśli chcesz.
źródło
Chociaż z innych odpowiedzi wydaje się, że w tej chwili nie ma sposobu, aby to zrobić bezpośrednio w repozytorium git, łatwo (dzięki odpowiedzi na inne pytanie :)) napisać skrypt, który wyodrębni drzewa dwóch zatwierdzeń do katalogów tymczasowych i uruchom na nich meld, usuwając oba katalogi po zakończeniu meld:
http://gist.github.com/498628
Oczywiście stracisz wszelkie zmiany wprowadzone przez meld, ale myślę, że jest to całkiem miłe dla szybkiego przeglądu różnic.
źródło
Myślę, że prostym sposobem na zrobienie tego jest użycie
git reset --soft
:Cel: porównaj różnice między branch_a i branch_b z połączeniem
źródło
W git V1.7.9 możesz porównać dwa zatwierdzenia bez wiersza poleceń:
Musisz skonfigurować opcje edycji w „git gui”, globalne: „Użyj narzędzia scalania: meld”.
Uruchom gitk , wybierz zatwierdzenie, kliknij prawym przyciskiem inne zatwierdzenie> " porównaj to -> wybrane ". W sekcji „patch” kliknij prawym przyciskiem myszy plik> „ external diff ”.
meld uruchomi się i wyświetli nadal wybrane, pierwsze zatwierdzenie po prawej stronie.
źródło
W przypadku połączenia w systemie macOS dodaj to do swojego
~/.gitconfig
zgodnie z zaleceniami opiekuna aplikacji macOS, yousseb :Jeśli chcesz, możesz pominąć
merge
konfigurację.Odpowiedź @ GutenYe nie zadziałała dla mnie z powodu automatycznego ucieczki i / lub czegoś z
zsh
.źródło