2015-03-31 15 views
5

Biorąc pod uwagę arbitralny, wykonywalny hak po popełnieniu błędu Git, nie jest on uruchamiany podczas nieinteraktywnego rebase, ani z rebase --force-rebase ani z rebase --no-ff, który jest synonimem pierwszego w trybie nieinteraktywnym zgodnie z GIT-REBASE (1) Manpage.Dlaczego hakowanie po popełnieniu błędu Git w nieinteraktywnym rebase nie jest uruchamiane?

Ale wykonując interaktywny rebelier z rebase --interactive --no-ff, ten sam hak Git jest uruchamiany w post-commit.

Czy ktoś może wyjaśnić powody tego zachowania.

Odpowiedz

0

Od https://git-scm.com/docs/git-rebase

--no-ff Z --interactive, cherry-pick wszystko rebased zobowiązuje zamiast szybkiego przewijania do przodu nad niezmienionych nich. Gwarantuje to, że cała historia oddziału o zmienionej nazwie składa się z nowych zatwierdzeń.

Bez --interaktywnego, jest to synonim --force-rebase.

Może się okazać pomocne, gdy powraca do seryjnej temat oddziału, jak opcja ta odtwarza oddział temat ze świeżych zobowiązuje więc może być przekompilować pomyślnie bez konieczności „przywrócić rewersji” (patrz Przywróć-a- wadliwe scalanie instrukcji dla szczegółów).

Wybór Cherry tworzy nowe zatwierdzenia, a git po zatwierdzeniu przebiega po utworzeniu nowego commit, prawda?

Od: https://git-scm.com/docs/git-cherry-pick

OPIS Given jedną lub więcej istniejących zobowiązuje, zastosować zmianę wprowadza każdy jeden, nagrywając nowy popełnić dla każdego. To wymaga, aby twoje drzewo robocze było czyste (bez modyfikacji z zatwierdzenia HEAD).

Czy to jasne?

+0

Jak to wpływa na hak commit? Proszę wytłumacz. – ams

+0

Zaktualizowałem odpowiedź – grimsock

+0

Myślę, że to wyjaśnia, dlaczego hak * działa *, ale nie wyjaśniłeś, dlaczego hak * nie * może wywołać. – ams