2015-03-31 15 views
5

Dato un hook post-commit arbitrario eseguibile, non viene eseguito durante un rebase non interattivo, né con rebase --force-rebase né con rebase --no-ff che è un sinonimo del primo in modalità non interattiva secondo GIT-REBASE (1) manpage.Perché non viene eseguito un hook post-commit Git su rebase non interattivo?

Ma facendo un rebase interattivo con rebase --interactive --no-ff lo stesso hook Git viene eseguito su post-commit.

Qualcuno può spiegare la logica dietro questo comportamento.

risposta

0

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

--no-ff Con --interactive, cherry-pick tutti ricalcolato commette invece di fast-forwarding su quelli non modificati. Ciò garantisce che l'intera cronologia del ramo successivo sia composta da nuovi commit.

Senza --interactive, questo è un sinonimo di --force-rebase.

Potete trovare questo utile dopo aver ripristinato una fusione argomento ramo, come questa opzione ricrea il ramo argomento con commit freschi in modo che possa essere riemerge con successo senza la necessità di "ripristinare la reversione" (vedi il revert-a- errore-fusione How-To per i dettagli).

Il grimaldello crea nuovi commit e git esegue il hook post-commit dopo la creazione del nuovo commit, giusto?

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

DESCRIZIONE Dato uno o commette più esistenti, applicare la modifica introduce ciascuno, la registrazione di un nuovo commit per ciascuno. Ciò richiede che l'albero di lavoro sia pulito (nessuna modifica dal commit HEAD).

È chiaro?

+0

Quindi, come influisce sul gancio di commit? Spiega per favore. – ams

+0

Ho aggiornato la risposta – grimsock

+0

Penso che questo spieghi perché l'hook * fa * si innesca, ma non hai spiegato perché l'hook potrebbe * non * innescare. – ams

Problemi correlati