2015-02-27 9 views
5

Korzystamy z przepływu pracy w stylu Git-Flow i chcemy dowiedzieć się, które żądanie pobrania zawierało zmiany w danym wierszu kodu.Znajdź zatwierdzenie scalenia, które zmodyfikowało daną linię?

Załóżmy, że mamy następującą historię:

 c---e---g 
    /  \ 
-a---b---d---f---h--- master 

Moja prośba przyciąganie została połączona w h z popełnić komunikat „Merge ściągania zapytanie nr 123”.

Jeśli zrobię błąd git na liniach kodu dodanych w żądaniu pobrania, to wyświetli mi się e, a nie h.

12345678 (Wilfred Hughes   2015-02-02 15:22:40 +0000 402) # Some old code 
e  (Wilfred Hughes   2015-02-12 15:22:40 +0000 402) # Added in the PR, line 1 
e  (Wilfred Hughes   2015-02-12 15:22:40 +0000 403) # Added in the PR, line 2 
56789012 (Wilfred Hughes   2015-02-26 17:24:18 +0000 404) # More old code 

Jak mogę znaleźć zatwierdzenie scalenia dla danej linii kodu w git?

(Uwaga: różni się od this related question, ponieważ zaczynam od linii kodu, a nie do zatwierdzenia).

+0

Czy próbowałeś 'git log --reverse --merges --topo zamówienie ..'? Pierwszy wpis powinien odpowiadać zatwierdzeniu 'h'. – Jubobs

+0

można użyć tego pytania http://stackoverflow.com/q/8475448/2082964: jak znaleźć scalenie po pewnym zatwierdzeniu –

Odpowiedz

2

Merge-commit pojawi się tylko w git-windzie, jeśli rozwiązałeś konflikt w tym commit.

Dla normalnych scala bez konfliktów, h nigdy nie pojawiają się w git winy, ponieważ nie zmieniają się w każdej linii kodu, a jedynie połączył g i f.

Więc co chcesz mogą być osiągnięte w 2 etapach

  1. Najpierw znajdź które zobowiązują odbiło wiersza kodu, który Cię interesuje. Można to osiągnąć poprzez opcję git winę -L (przychodzi git 1,8. 4). Podaj zakres 10+ linii, ponieważ prawdopodobnie zmieniłby się dokładny numer linii.

    $ git winę -L200, + 10 - nazwa_pliku.ext

  2. Znajdź pierwszy scalającej po commit znaleźć w kroku 1 Więc trzeba by najpierw znaleźć które zobowiązują wpłynęły na linię Kod jesteś zainteresowany. można to osiągnąć za odpowiedzi Find merge commit which include a specific commit

Powiązane problemy