2013-09-28 12 views
9

git commit apre l'editor di testo e visualizza alcune informazioni circa le modifiche da commesso:git: Mostra il messaggio dello scorso commit a commettere modello

# Please enter the commit message for your changes. Lines starting 
# with '#' will be ignored, and an empty message aborts the commit. 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 

# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 

Vorrei estendere questo modello per visualizzare

  • la prima riga del N ultimi messaggi di commit e/o
  • il messaggio completo dell'ultimo commit

della filiale attuale. Come lo posso fare?

risposta

10

Questo utilizzerà git hooks.

  • nella directory principale del progetto passare alla .git/hooks/
  • Ora creare il file prepare-commit-msg
  • Aggiungere il seguente frammento di codice:
#!/bin/sh 
ORIG_MSG_FILE="$1" # Grab the current template 
TEMP=`mktemp /tmp/git-msg-XXXXX` # Create a temp file 
trap "rm -f $TEMP" exit # Remove temp file on exit 

MSG=`git log -1 --pretty=%s` # Grab the first line of the last commit message 

(printf "\n\n# Last Commit: %s \n\n" "$MSG"; cat "$ORIG_MSG_FILE") > "$TEMP" # print all to temp file 
cat "$TEMP" > "$ORIG_MSG_FILE" # Move temp file to commit message 
  • chmod +x prepare-commit_message

Idea preso in prestito da Enhancing git commit messages

È possibile afferrare l'intero messaggio di commit utilizzando %b e %B, ma potrebbe incorrere in problemi con multilinea impegna. Potrebbe essere in grado di ottenere l'immaginazione con %-b e %-B, o semplicemente saperne di più nel Documentation (Selezionare FORMATO)

+0

Ricordarsi di cancellare il file temporaneo, e aggiungere un '\ n 'alla fine del' printf' (si non include una nuova riga come "echo'." –

+0

@BrianCampbell Aggiunte le nuove linee dopo il messaggio. Spero anche di aver ripulito il file. – Brombomb

+1

'trap" rm -f $ TEMP "exit' dovrebbe farlo (generalmente messo dopo la linea che crea il file temporaneo in modo che se le linee successive escano funzionerà ancora) –

Problemi correlati