È possibile ottenere un elenco di commit "non urgenti" nel proprio repository locale confrontando il ramo corrente con il ramo upstream. Ad esempio,
Questo ci dice che abbiamo un commit che non abbiamo spinto a monte. Noi possiamo usare git log
a un elenco di questi commit:
$ git log --oneline origin/master..master
bc9dacf added another file
Quindi non v'è un elenco di commit inediti che potremmo REBASE volenti o nolenti senza impattare eventuali collaboratori. Finché limiti lo a questi sei in buona forma.
Naturalmente, parte della domanda riguardava l'automazione di questo comportamento. C'è un hook pre-rebase
che viene chiamato prima di un'operazione di rebase che potrebbe essere usato per far rispettare questo, ma penso che lascerò questo come esercizio al lettore. Non sono convinto che questo sia un grosso problema nella pratica.
Se il progetto upstream con cui si sta collaborando ha un flusso di lavoro basato su GitHub tirare le richieste, o Gerrit, o qualcosa di simile, hai un sacco meno di cui preoccuparsi: perché non si è mai spingendo al l'condiviso repository, le tue modifiche verranno semplicemente rifiutate se hai gestito per rebase il tuo repository locale in un modo non compatibile con lo con lo stato del codice upstream.
bene, quando si riscrive e si riscrivono già i commit spinti, si dovrà usare il flag '--force' quando si preme, altrimenti si ottiene un errore. O intendi far rispettare questo serveride? – mb21
[capitolo 8.3 del libro Pro Git] (http://www.git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) dice: "L'hook pre-rebase viene eseguito prima di rebase nulla e può fermare il processo uscendo dal nulla 0. Puoi usare questo hook per disabilitare il ribasamento di qualsiasi commit che è già stato premuto. L'hook di pre-rebase di esempio che installa Git fa questo, sebbene faccia supposizioni che potrebbero non corrispondere al tuo il flusso di lavoro." –
Non intendo imporre questo serveride. Grazie. – Bludzee