2012-08-01 16 views
8

Kolega utworzył oddział lokalny ("branchA") od mistrza, wykonał jakąś pracę, odepchnął, połączył się z wzorcem, wykonał więcej pracy i ponownie go przepchnął. Jednocześnie inni koledzy pracują nad innymi gałęziami i łączą je w celu opanowania.git: Jak wyświetlić zatwierdzenia do pojedynczego oddziału

Teraz muszę pobrać oddziałA, aby go przejrzeć. Zrobiłem więc git pull i git checkout -b branchA origin/branchA, co jest w porządku. Ale wszystkie polecenia (git diff/log/show) pokazują zatwierdzenia wykonane we wszystkich gałęziach repo.

Jak mogę wyświetlić różnicę wszystkich zatwierdzeń wykonanych do oddziału A względem wersji wzorca, z której został utworzony?

Również w jaki sposób mogę git diff rozgałęzićA na bieżącą HEAD of master, ale tylko wyświetlić zmienione pliki w ramach branchA?

Odpowiedz

10

Ponizsze odnosi się do drugiego pytania, jak znaleźć różnice między branchA i lokalnym aktualna wersja z master. Chcesz użyć składni "podwójnej kropki" z git log, aby zobaczyć wszystkie zatwierdzenia w branchA, które nie są w master. Słownie:

git log master..branchA 

Per strony git log Man:

SYNOPSIS 
    git log [<options>] [<since>..<until>] [[--] <path>...] 
    ... 
    <since>..<until> 
    Show only commits between the named two commits. When either <since> or <until> is omitted, it defaults to HEAD, i.e. the tip of the current branch. 
    For a more complete list of ways to spell <since> and <until>, see gitrevisions(7). 

Jeśli chcesz zobaczyć rewizje w obu master lub branchA, ale nie w obu, można użyć 'triple-kropka' składnia:

git log master...branchA 

Wreszcie, można użyć dokładnie taką samą składnię z git diff, mianowicie git diff master..branchA i git diff master...branchA, respectivel y.

Na marginesie, jeśli masz wyrejestrowany branchA, nie musisz nawet określać go jako <until>. Git obejmie HEAD jeśli pozostało nieokreślone, więc te dwa zestawy komend są równoważne:

git checkout branchA 
git log master.. 

i

git log master..branchA 
0

można użyć git log --branches = mybranch

To pokaże dziennik na konkretnej branży

+0

To nie działa. Może dlatego, że połączyłem się z mistrzem, ale widzę zmiany dokonane przez innych ludzi. – user1491250

0

git popełnia nie zachowują informacje na temat „który oddział” zostały popełnione na. Dają ci tylko punkt w drzewie, z którego możesz wrócić. Gdy dojdzie do scalenia, nie masz możliwości, od zatwierdzenia scalenia, aby zdecydować, który rodzic pochodzi z oddziału, z którego zacząłeś. Jest to omówione w kilku szczegółach: over here.

To jest moje zrozumienie. Chciałbym, aby mnie poprawiono, jeśli się mylę.

2
  1. git diff master..brnachA: porówna wszystkie zmodyfikowane pliki pomiędzy HEAD-em master i branchA.
  2. git diff master...brnachA: porównuje branchA z wersją master, z której został utworzony.

FYI: git diff wygeneruje dane wyjściowe w wierszu poleceń. Jeśli chcesz zobaczyć wyniki w niektórych narzędziach wizualnych, użyj git difftool.

Możesz również przekazać wszystkie argumenty i opcje git diff do git difftool.

+0

-2- nie jest całkiem poprawne. Zwróci ona zatwierdzenia w "master" lub "branchA", ale nie w obu. Jeśli "master" advanced 50 zatwierdza, ale 'branchA' jest w pełni scalony, zwróci 50 commitów w master. Nie porównuje to 'branchA' z bazą scalającą w master, co wydaje się być pierwszym pytaniem? – Christopher

Powiązane problemy