Mi riferisco spesso a git log --graph --decorate --oneline --all --full-history
per visualizzare lo stato corrente dei miei rami, ma non mostra diramazioni/rami anonimi. C'è un modo per far apparire le teste staccate in questo grafico?C'è uno strumento per mostrare a git "teste staccate" in un grafico?
So che esiste git reflog
, ma è piuttosto difficile da leggere poiché non esiste una struttura: tutto ciò che devi fare è il messaggio di commit, che può ancora essere WIP se non ho ancora finito il commit.
Un po 'di sfondo (questo non è necessario per rispondere alla domanda, ma aiuterà a spiegare la motivazione per questo): Sono un utente Mercurial e il mio flusso di lavoro coinvolge un sacco di branching anonimi. Tendo a fare uso di hg heads
molto per controllare queste testine, e spesso a hg rebase
per separare o combinare serie di commit in base a ciò che ha senso ai fini di una revisione del codice di facile comprensione.
Mentre mi sto abituando all'utilizzo di git, spesso mi ritrovo con le teste staccate quando, ad esempio, ho eseguito il rebase di alcuni commit da un ramo per creare un nuovo ramo. Trovare queste teste staccate è fastidioso con git reflog
e, a dire il vero, è un po 'spaventoso che spariscano dal solito git log
. Ho persino dimenticato i vecchi commit in questo modo, e ho dovuto estrarli dallo git reflog
un giorno o due dopo. In Mercurial quei commit rimarrebbero come una testa anonima, e mi verrebbe in mente che ho bisogno di finirli.
Sembra pigro, ma dovendo pensare a un il nome di un ramo in anticipo è fastidioso. Quindi devo cancellare il nome anche più avanti. Non mi sembra leggero. Mi chiedo se c'è un'estensione che manterrà i puntatori ad ogni ramo senza nome per me. Quindi potrei rinominare il ramo se decido di tenerlo, o cancellarlo se voglio lasciarlo essere GCed. – dmnd
@dmnd Hai l'alfabeto latino per alleggerire la tua vita. Quando vuoi diramarti, esegui 'git checkout -b a'. Creerà un ramo chiamato 'a' che è molto simile ad un ramo anonimo perché il suo nome è assolutamente inutile. Se finisci le lettere in questo modo, stai facendo qualcosa per cui Git non è stato progettato. Forse potresti citare nella tua domanda come esattamente tieni traccia del tuo lavoro se non si nominano i rami. Stai ispezionando regolarmente i messaggi di commit? Le persone tendono anche a usare alias, quindi potresti abbreviare il precedente a 'gco -b a'. È comunque necessario utilizzare un nome univoco per un ramo. –
Non sono a conoscenza di tale estensione, ma sembra semplice.Sostituisci "git commit" con uno script di shell che prima verifica se HEAD è staccato (controllando lo stato di uscita di 'git symbolic-ref HEAD') e, in tal caso, crea un nuovo ramo usando qualsiasi schema di denominazione che ti piace. – David