2016-08-09 26 views
5

Chciałbym wiedzieć, czy istnieje sposób na uzyskanie skumulowanego porównania git dla wielu nieudanych zatwierdzeń.Uzyskaj zbiorczą różnicę w git dla wielu niekonsekwencyjnych zatwierdzeń

Dla przykładu, mogę dostać tego, co zmieniło się w każdy commit przy użyciu:

git diff 123456^ 123456 

Gdzie "123456" to skrót git.

Mogę to zrobić dla wielu zatwierdzeń. Ale teraz chcę zrobić wiele różnic i połączyć wyjście w jedno.

Dla przykładu,

git diff 123456^ 123456 
git diff abcdef^ abcdef 

Ale diff połączyć w jeden. Ale "123456" i "abcdef" nie są kolejnymi zatwierdzeniami.

Aktualizacja: Powiedzmy linia w pliku xyz zmianie:

In commit 123456: from "foo" to "bar" 
in commit abcdef: from "bar" to "oof" 

Chcę po prostu zobaczyć, że zmieniło się ono od "foo" do "oof" po to, aby zobowiązuje.

git diff 123456 abcdef nie działa dla mnie, ponieważ nie chcę wszystkich zmian między 123456 a abcdef.

Nie chcę niczego robić; po prostu chcę to sprawdzić kod bezpieczeństwa.

+0

Czy jesteś w systemie Windows lub Unix? –

Odpowiedz

2

Jestem pewien, że ktoś ma bardziej sprytne podejście, ale możesz spróbować zgnieść wszystkie wybrane poprawki w jeden, a następnie zmierzyć różnicę. Możesz to zrobić, wykonując --cherry-pick z --no-commit. Kiedy już uzyskasz wynik końcowy, możesz zmienić HEAD, aby uzyskać różnicę w wersji bazowej (zakładając, że zresetowałeś się do tego miejsca).

+0

Dziękuję za odpowiedź, ale moim wymaganiem jest obejrzenie zmian w celu bezpiecznej weryfikacji kodu. Nie muszę niczego popełniać. – DDS

+0

Nie robiłbyś zatwierdzenia. Funkcja --no-commit powstrzymuje to. – DavidN

+0

W rzeczywistości jest to droga, z lub bez '-n' do pracy w drzewie pracy, a nie jako seria zatwierdzeń. – torek

0

git diff <commit-A> <commit-B> może generować diff między A i B, nawet jeśli A i B są na różnych oddziałach lub z różnych repo.

+0

Dzięki, ale to nie jestem po. Już wiem, jak to zrobić. – DDS

+0

@DDS Skoro już wiesz, jak to zrobić, czy chcesz udostępnić go tutaj? – Krizz