Nota: Non sto cercando di riavviare l'argomento se Mercurial o Git sono migliori, ho solo una domanda tecnica che io, come utente Mercurial, non capisco. Inoltre, non sono sicuro se SO sia il posto giusto per porre una simile domanda, ma è la relativa programmazione è.Perché Git non memorizza il nome del ramo come parte del commit?
Ci sono state molte discussioni su come i due sistemi di controllo di versione Git e Mercurial differiscono l'uno dall'altro dal punto di vista dell'utente (ad esempio e http://felipec.wordpress.com/2011/01/16/mercurial-vs-git-its-all-in-the-branches/) e la principale differenza è la gestione dei rami. Ho letto molte di queste discussioni, ma continuo a pormi questa domanda:
Perché Git non memorizza il nome del ramo come parte del commit?
Non vedo davvero una buona ragione per non farlo; significa che i dati non possono semplicemente svanire perché non vi è alcun riferimento (tag, ramo o altro) che vi si attesti.
Vedo archiviare il ramo nel commit come un grande vantaggio per Mercurial, perché ciò rende più difficile la perdita di dati.
Il punto principale della folla Git in favore del modello di branching di Git, che è possibile semplicemente eliminare i rami, non impedisce a Git di memorizzare il nome del ramo come parte di ogni commit: Se i commit di un ramo sono cancellati , così come i riferimenti a quel ramo. Inoltre, non interferirà con l'argomento "branching a buon mercato": le filiali non saranno più costose da gestire. E non penso che lo storage aggiuntivo necessario dovrebbe essere motivo di preoccupazione: sono solo un paio di byte per commit.
Sono confuso, quando perdi dati al momento? – Useless
Non ce l'ho, ma è possibile: per quanto ho capito, una testina staccata sarà raccolta dalla spazzatura quando non si punta un tag o un ramo. –
@danielkullmann: raccolta dei rifiuti, sì, ma non prima di almeno due settimane: http://stackoverflow.com/questions/5772192/git-how-can-i-reconcile-detached-head-with-master-origin – VonC