2010-07-30 8 views
5

Mam plik tekstowy (.yml), do którego wprowadzam niektóre teksty do mojego systemu. Ale teraz musimy wiedzieć, jakie nowe linie naraz. Pomyślałem, żeby użyć gita do rozwiązania naszego problemu, ale nie mogę znaleźć wyjaśnionego polecenia, aby to zrobić.Używanie git diff w tym samym pliku pomiędzy pierwszym i ostatnim zatwierdzeniem

Czy to możliwe?

+0

możliwe duplikat [GIT: jak ten sam plik diff między dwoma różnymi zatwierdzeń na tej samej gałęzi] (http://stackoverflow.com/questions/3338126/git -how-to-diff-the-same-file-between-two-different-commit-on-the-branch) –

Odpowiedz

11

Można uzyskać listę zatwierdzeń withs czymś tak:

git log --abbrev-commit --pretty=oneline

Które powinno coś takiego:

commitD Description 
commitC Description 
commitB Description 
commitA Description 

Wybierz dwie rewizje i zastąpić je poniżej:

git diff <commitA>..<commitB> -- /path/to/file

+0

Rozwiązałem mój problem, thnx! –

3

Można to zrobić za pomocą jednego polecenie:

git diff -w `git rev-list HEAD --reverse | head -1`..HEAD -- <path/file> 

nie działa używać --reverse o liczbie 1 (-1/--max-count 1) ... ponieważ odwraca wynikowej liście po obcięciu go. Więc albo użyjesz -reverse razem z poleceniem head lub użyjesz tail-1.

Musiałem dodać -w dla mojego użycia ze względu na przełączniki w końcówkach linii i użycie tabulacji w stosunku do spacji.

To może nie działać zgodnie z oczekiwaniami, jeśli plik nie został dodany w pierwszym zatwierdzeniu! Można zmienić powyższą linię do:

git diff -w `git rev-list HEAD --reverse -- <path/file> | head -1`..HEAD -- <path/file>