8
votes

Fonctionner à bash pour commettre et pousser dans une commande

J'essaie de commettre une commande d'une seule commande, en tapant quelque chose comme:

gm "Ceci est mon message de validation"

Qui fonctionnerait:

git commit -am "Ceci est mon message de commit" && git push

J'ai essayé cette fonction dans mon .bstrucc : < / p> xxx

qui fonctionne, à l'exception du fait que je ne peux pas taper plusieurs mots comme commit un message. Je peux exécuter

gm my_message

et ça fonctionne bien, mais si je tape plusieurs mots, comme

gm Ceci est mon message

Ça ne fonctionnera que git commit -am "this" && git pousser . J'ai essayé d'utiliser des guillemets mais cela renvoie une erreur. Comment dois-je configurer cette fonction pour fonctionner?


2 commentaires

C'est une mauvaise idée. Les situations vont inévitablement surviser là où cela vous mord


Si vous voulez vraiment faire cela (comme Daenyth dit, vous ne le faites probablement pas), pourquoi ne pas utiliser un alias? Vous pouvez incorporer la fonction (E.G. gm = "! F () {...}; F" ) puis l'appelait comme git gm .


4 Réponses :


6
votes

Nouvelle réponse étendue
  • Ceci est le plus proche de ce que vous demandez:

    Git commit -am "$ *" && git pousser

    1 $ signifie spécifiquement le premier argument dans une liste (espèce blanche).

    nb. J'écris à l'origine "$ @", mais cela se développe à "$ 1" "$" 2 "..., qui n'est pas ce que vous voulez:" $ * "se développe à une seule chaîne citée avec tous les arguments.

    • Il est possible que la chaîne vous-même peut être plus sensible, surtout si vous vous souciez de la coquille Chomping Whitespace (donc exécutez gm "mon message de validement" et utilisez le "$ 1" Syntaxe Douglas décrit)

    • L'utilisation d'un éditeur externe est préférable si vous vraiment attention à la mise en forme. Omettez simplement l'argument -m entièrement, assurez-vous que $ Editor est défini sur quelque chose que vous souhaitez utiliser et jetez un coup d'oeil à ce Note sur les messages GIT COMMIT .


3 commentaires

Le seul problème avec cette approche (fractionnement par espaces pour les arguments à la fonction, puis la recombinant de la commande GIT), est que tout l'espace blanc est écrasé dans un seul espace.


True, bien que si vous vous souciez vraiment de la mise en forme de votre message, vous ferez mieux de l'écrire dans un éditeur Anwyay.


git commit -am n'ajoutera pas de nouveaux fichiers, donc git ajouter -a && git commit -m "$ *" && git pousser



10
votes

Vous avez besoin de citations autour de l'endroit appelant la fonction et la commande git.

This commit has double spaced sections. And a tab, and a new line


5 commentaires

Vous n'avez pas besoin d'ajouter des citations à 1 $ à l'intérieur de la fonction.


@Griffin êtes-vous sûr? - La page Homme Git ne suggère pas que MSG puisse avoir plusieurs arguments.


Je devais ajouter les citations, sinon j'ai eu un message étrange sur le -a non valide, quelque chose comme ça.


"En outre, vous n'utilisez pas vraiment la puissance du contrôle de la version distribuée si vous poussez immédiatement chaque commit." Le modèle de flux de travail de pousser après chaque engagement est toujours utile si je suis le seul à travailler sur un projet, non? Ou si je ne fais que pousser à ma branche / fourchette?


@Samarthchawla Vous pouvez le faire, mais vous pouvez également le faire avec Subversion ou tout autre système de contrôle de source centralisé. L'un des avantages du contrôle de source distribué est que vous pouvez travailler lorsque vous êtes déconnecté. De plus, avec Git, des engagements non publiés peuvent être édités pour faciliter la compréhension de votre historique de révision. Si vous appuyez sur un référentiel partagé, vous ne pouvez pas réécrire ces commits.



0
votes

Vous aurez que vous avez encapsulé les mots avec des citations, comme gm "ceci est mon message" .


0 commentaires

4
votes

IMHO, une meilleure approche serait la suivante: xxx

qui définira un alias nommé ACP pour la commande git natif.

Maintenant tu peut facilement exécuter git ACP "commettez des messages commettez ici!"


0 commentaires