2010-06-29 8 views
12

Ho impegnato alcuni file sorgente nel mio repository git e l'ho etichettato come una nuova versione del mio software. Ma ho visto un errore che avevo appena fatto e ho usato la funzione "modifica" per salvare i file corretti.Cosa succede in Git a un tag quando modifichi il commit che è stato taggato?

Ora, vedo che il tag non è stato trasferito al nuovo commit (quello realizzato con la funzione "modifica"). Ma posso anche vedere che il tag esiste ancora ...

Mi piacerebbe sapere cosa è successo al tag. Questo comportamento è un bug? Il tag è collegato a un commit che non esiste più?

So che posso forzare la creazione dello stesso tag sul nuovo commit, ma credo che ci dovrebbe essere un modo migliore (come un parametro della riga di comando sul commit che usa "modifica").

+0

Non esiste un parametro simile a 'commit --amend' perché i tag hanno lo scopo di contrassegnare un dato commit; in generale non vuoi spostarli quando commetti errori. – Cascabel

risposta

10

Questo è di progettazione. Git traccia i commit, i tag, i BLOB e gli alberi come hash SHA-1 dei loro contenuti. Sono semplicemente degli indicatori per gli oggetti. L'oggetto a cui punta il tag è ancora lì. Questa è la versione del commit prima di modificarlo. Basta eliminare il tag e crearlo nuovamente. Assicurati di far sapere agli altri che stanno usando il repository cosa hai fatto se hanno iniziato qualcosa da quel commit.

Per avere una buona conoscenza di come funziona git, dai un'occhiata a Rails Conference di Scott Chacon che parla di git su gitcasts.com. Inoltre, leggi il breve libro su git: progit.org/book.

+0

Grazie. Sapevo che Git usava SHA-1 ma pensavo che la funzione di modifica avesse semplicemente rimosso il commit precedente e che quindi il tag non avesse più nulla a cui puntare. –

+1

@Fififox, questa è una delle cose carine su git, non puoi mai perdere qualcosa finché hai un riferimento da qualche parte. – kubi

Problemi correlati