/ / Różnica między dwiema łatkami - git, diff, git-flow

Różnica między dwiema łatkami - git, diff, git-flow

Załóżmy, że mam gałąź rozwojową i pracujęw niektórych gałęziach funkcji, w których mam jedno lub więcej zatwierdzeń, ciągle zmieniam zatwierdzenia, a także wykonuję ich ponowną zmianę na inne gałęzie (aby zachować historię zatwierdzeń na przyszłość). Na każdym etapie robię różnice lokalnie w stosunku do rozwoju. Mam zestaw różnic i chcę zobaczyć różnicę między nimi. Jak mogę to łatwo zrobić? Jakiej sekwencji poleceń Git mogę użyć?

Aktualizacja

Rozwiązaniem jest posiadanie dwóch różnic związanych zrozwijać się. Przygotuj kopię repozytorium, zastosuj pierwszą różnicę. Wykonaj dodatkową kopię i zastosuj inną łatkę. Użyj jakiegoś narzędzia porównawczego i porównaj dwa repozytoria. To byłby rezultat, którego się spodziewam. Problem z tym podejściem polega na tym, że muszę mieć co najmniej dwie kopie repozytorium i użyć jakiegoś narzędzia do zrobienia różnic katalogów. Inne podejście, które jest prawdopodobnie lepsze, to użycie dwóch gałęzi, zastosowanie łatek i zatwierdzenie zmian, a następnie porównanie oddziałów. Pytanie: czy jest coś prostszego w komendach git, aby to zrobić? Coś jak wziąć tę gałąź i dwa pliki diff, zwróć mi różnicę?

Odpowiedzi:

1 dla odpowiedzi № 1

Twój drugi przepływ pracy jest odpowiedzią. Oto możliwy alias:

diffdiff = !git stash save -u -q &&
git apply $1 && git add -A && git commit -q -m"1" &&
git reset --hard HEAD@{1} -q &&
git apply $2 && git add -A && git commit -q -m"2" &&
git reset --hard HEAD@{1} -q && git stash pop -q &&
git diff HEAD@{3} HEAD@{1} && :

Wywołaj go w oddziale, w którym chcesz zastosować różnice w plikach diff znajdujących się poza repozytorium.

git diffdiff <diff_file_1> <diff_file_2>

Nie jest to rozwiązanie wieloplatformowe, testowane na osxie, zpowłoki zsh i bash. Jeśli dobrze jest zrobić to ręcznie, jest to trochę prostsze, wiele komplikacji polega na zapewnieniu pewnego rodzaju niezawodnego rozwiązania. Również pierwszą linią wyjściową jest szum, wydaje się, że git skrytka pop nie jest w stanie wykonać "--quiet" parametru.

(Edycja: Nie ma potrzeby tymczasowego oddziału, więc uproścłem alias.)