2013-05-27 11 views
11

Czy istnieje sposób na sprawdzenie wyniku scalenia dwóch oddziałów przed ich scaleniem?Zapoznaj się z wynikiem git-merge przed faktycznym scaleniem

Podczas próby scalenia gałęzi A z odgałęzieniem B, zwykle kupuję tymczasową gałąź od B, łączę ją z odgałęzieniem A, następnie utworzę łatkę diff, lub po prostu sprawdzę do tego tymczasowego oddziału i sprawdzę, czy wszystko jest w porządku działa poprawnie przed scaleniem A do B.

Czy git dostarcza komendę lub funkcję, która by to spełniła?

+3

'git merge --no-commit' –

Odpowiedz

18

Jak sugeruje Marian Theisen, można to zrobić, aby zrobić scalania bez popełnienia

git merge --no-commit <branchname> 

Można wycofać się, że łączą się z

git reset --hard 

Należy również pamiętać, że jest to zawsze łatwe do z powrotem w Git. Można zrobić pełną scalanie, w tym popełnić, sprawdzić kompletny wynik i jeśli zmienisz zdanie można

git reset --hard HEAD^ 

wyrzucić scalanie i być z powrotem w commit przed scaleniem.

W rzeczywistości, w dowolnym momencie uchwały seryjnej, można zrobić

git reset --merge 

Aby przerwać scalanie i wyrzucić tylko zmiany seryjnej.

2

Po co mieć kłopoty? Po prostu wykonaj scalenie, przetestuj go, a jeśli ci się nie podoba, wtedy git reset --hard HEAD^ powróci do stanu przed scaleniem. Wykonanie pewnego tymczasowego lub w połowie scalenia zwiększa tylko twoją pracę, niezależnie od tego, czy zdecydujesz się zachować scalenie, czy nie.

11

Nazywam to "przepisem pracy z recenzowaniem kodu" i robię to cały czas.

git merge --no-commit --no-ff branchname 

Bez flagi --no-ff, jeśli Git można zrobić szybko do przodu, a następnie będzie to robić. (Zgodnie z oczekiwaniami, podobnie jak w przypadku szybko do przodu, nie ma scalającej stworzyć.)

mam tej konfiguracji aliasu .gitconfig dla wygody:

rev = merge --no-ff --no-commit 

Tak, że mogę po prostu zrobić:

git rev branchname 

Chodzi o to, że wszystkie funkcje są opracowywane w oddzielnych oddziałach, a każdy element jest sprawdzany i łączony przez kogoś innego niż autor. Jak inne odpowiedzi wskazał, można przerwać seryjnej z:

git reset --merge 

i zapytać autora, aby kolejne zmiany.

Aby wyświetlić dziennik tylko scaleniu zobowiązuje Używam tego innego Alias:

revlog = log --first-parent 

ten sposób dziennik staje timeline z dużych kroków: funkcję przez funkcję zamiast popełnić przez popełnić.

+0

Nie ma ryzyka w szybkim scalaniu do przodu. Szybkie łączenie do przodu jest najlepsze: bez ryzyka, bez zanieczyszczeń, wystarczy przesunąć wskaźnik gałęzi do przodu. Dlaczego ktokolwiek tak niechcący korzysta z tej flagi - no-ff jest dla mnie zagadką. Jeśli ktokolwiek może rzucić na to jakiekolwiek światło, zrób to. Z własnego doświadczenia ostrzegałbym ludzi, aby naprawdę zrozumieli, co oznacza szybkie przekazywanie, zanim zdecydują się na nie. –

+0

@PaulvanLeeuwen Zgadzam się z Twoimi odczuciami. Ale nie jest to przypadek "przypadkowego użycia flagi" --no-ff ". Jest to odpowiedź na konkretne pytanie dotyczące przeglądu zmian przed scaleniem. Chociaż fast-forward nie jest połączeniem, użycie '--no-ff' wydaje się pasować do intencji OP. – janos

Powiązane problemy