2016-11-09 1 views
1

Je veux améliorer la façon dont je fais git commits et j'ai lu sur le web. J'ai suivi le site ici http://chris.beams.io/posts/git-commit/ et cela m'a conduit à https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration où je peux définir mon éditeur par défaut, mais je ne comprends toujours pas comment je modifie la ligne d'objet séparément du corps du commit.Comment faire un commit git avec une ligne d'objet et un corps de message?

Je suis habitué à faire:

git commit -am "message here" 

mais si je comprends bien plus longtemps engage, j'utiliser un éditeur comme vim (sur mon mac)

+2

Cette séparation en « ligne de sujet » et « corps » est fait par le client qui affiche le message de commit. La première ligne du message de validation deviendra le "sujet" habituellement. – Thilo

+0

Comment faire la différence entre la première et la deuxième ligne? Comment puis-je valider en utilisant l'éditeur? – weaveoftheride

+1

Avec un saut de ligne. Plus facile à faire dans un éditeur de texte. – Thilo

Répondre

6

La méthode la plus simple consiste à exécuter git commit sans -m et le message.

(git commit -a est un raccourci pour git add .; git commit)

Il va commencer un éditeur où vous pouvez entrer dans le message de commit sur plusieurs lignes. Ensuite, vous enregistrez le fichier et lorsque l'éditeur se termine, git commit continue et utilise le message du fichier. Si vous préférez tout faire à partir d'une seule commande (ou si vous écrivez un script qui doit appeler git commit et que cette façon interactive de valider n'est pas une option), vous pouvez fournir le sujet de la livraison et le corps du message de validation par using the -m argument two times :

git commit -m "this is the subject" -m "this is the body" 

Utilisation -m plusieurs fois dans la ligne de commande concatène les messages sous forme de points séparés (séparés par une ligne vide). Cela fonctionne parfaitement pour fournir le sujet comme l'argument de la première -m et le corps du message comme l'argument de la deuxième -m.

Il n'existe aucun moyen simple d'intégrer des retours à la ligne dans le corps du message de validation. En utilisant trois fois ou plus l'option -m produira un message de validation contenant des lignes vides et ce n'est probablement pas ce que vous voulez.

Si vous êtes sur Linux ou macOS et vous shell de choix est bash alors il est un moyen laid, mais travailler pour écrire un corps de message qui contient de nouvelles lignes. Incorporer chaque ligne entre guillemets (") pour leur permettre de contenir des espaces et rejoindre les lignes avec $'\n' qui est la manière bash d'écrire des caractères spéciaux dans la ligne de commande (ou dans un script).

La commande ressemble à ceci:

git commit -m "the subject" -m "the first line"$'\n'"the second line"$'\n'"the third line" 
+3

En sh/bash, il y a une façon peut-être moins moche (mais un peu sujette aux erreurs) d'incorporer les nouvelles lignes: juste délibérément échouer à fermer la citation, comme dans 'git commit -m sujet -m" première ligne'. entrez cette commande, le shell passe de l'invite n ° 1 (celle qui se termine généralement par '$') à l'invite n ° 2 (se terminant généralement par '>' ') et vous pouvez continuer à taper.Une ligne avec un seul double guillemet termine l'entrée, donc vous pouvez entrer: 'la deuxième ligne' et ensuite' la troisième ligne ''. Je ne recommande pas * particulièrement ceci, je l'offre simplement comme une alternative au' $ Syntaxe '\ n'' – torek

+0

@torek - C'est une super alternative, très propre et pratique, merci! – xZero

1

Run: git commit -a et vous devriez obtenir une interface d'éditeur de VI qui vous permet d'entrer la ligne Objet et le message. Après avoir terminé la saisie du texte, appuyez sur ÉCHAP puis sur: wq