2016-07-21 41 views
5

Teraz jestem w gałęzi funkcji, ale nie wiem, czy jest tworzony z gałęzi rozwijania czy zwalniania.Jak zdobyć nazwę macierzystej gałęzi git w bieżącym oddziale?

Czy ktoś może mi powiedzieć, jak mogę uzyskać nazwę oddziału macierzystego bieżącego oddziału git.

+1

Nie jestem pewien, czy pytania są takie same, ale możesz uzyskać odpowiedzi tutaj http://stackoverflow.com/questions/3161204/find-the-parent-branch-of-a-git-branch –

+2

@ Md.KhairulHasan Pytanie jest w rzeczywistości to samo, co od razu połączyłeś się bezpośrednio z tym pytaniem :) – DAXaholic

Odpowiedz

4

Biorąc pod uwagę, że Git używa skierowanego acyklicznego wykresu i zazwyczaj repo ma tylko jeden root, wszystkie twoje gałęzie wskazują na jeden wstępny commit. Więc to, czego naprawdę chcesz, to oddział, który dzieli największą część swojej historii z twoim oddziałem.

Nie można po prostu odszukać gałęzi, której HEAD zawiera się w historii bieżącej gałęzi, ponieważ oddział HEAD najprawdopodobniej od tego czasu się poruszył.

Więc polecam użyć git merge-base, który znajdzie się najnowszy wspólny przodek (aka widelec punkt) dwóch oddziałów lub dopuszcza:

$ git merge-base feature develop 
12345abc 
$ git merge-base feature release 
98765fed 

Wyjście to będzie dwie rewizje, które pojawiają się w historii obu gałęzi, odpowiednio. Jednym z dwóch, będą zawarte w obu oddziałów, dzięki czemu można karmić je do merge-base ponownie, aby uzyskać popełnić chcesz (lub raczej ten, który nie chce):

git merge-base 12345abc 98765fed 
98765fed 

Tak w naszym przykładzie feature pochodzi z develop, ponieważ dwa mają udział w zatwierdzeniu, którego nie ma release.

Pamiętaj, że zadziała to tylko wtedy, gdy nie wykonasz scalania krzyżowego między funkcjami i nie rozwiniesz.