git append, commettre et pousser des commandes dans un?

Est-il possible d’utiliser ces trois commandes en une?

git add . git commit -a -m "commit" (do not need commit message either) git push 

Parfois, je ne change qu’une lettre, un remplissage CSS ou quelque chose. Cependant, je dois écrire les trois commandes pour les modifier. Il y a beaucoup de projets où je ne suis qu’un pousseur, donc cette commande serait géniale!

Construire de la réponse de @ Gavin:

Faire lazygit une fonction au lieu d’un alias vous permet de lui passer un argument. J’ai ajouté les éléments suivants à mon fichier .bashrc (ou .bash_profile si Mac):

 function lazygit() { git add . git commit -a -m "$1" git push } 

Cela vous permet de fournir un message de validation, tel que

 lazygit "My commit msg" 

Vous pourriez bien sûr en profiter encore plus en acceptant encore plus d’arguments, tels que l’endroit où vous devez aller ou quelle twig.

J’ai fini par append un alias à mon fichier .gitconfig :

 [alias] cmp = "!f() { git add -A && git commit -m \"$@\" && git push; }; f" 

Utilisation: git cmp "Long commit message goes here"

Ajoute tous les fichiers, puis utilise le commentaire pour le message de validation et le place à l’origine.

Je pense que c’est une meilleure solution car vous contrôlez le message de validation.

L’alias peut également être défini à partir de la ligne de commande, cela l’ajoute à votre .gitconfig :

 git config --global alias.cmp '!f() { git add -A && git commit -m "$@" && git push; }; f' 

Bien que je sois d’accord avec Wayne Werner sur ses doutes, c’est techniquement une option:

 git config alias.acp '! git commit -a -m "commit" && git push' 

Qui définit un alias qui exécute commit et push . Utilisez-le comme git acp . Sachez que ces alias “shell” sont toujours exécutés depuis la racine de votre repository git.

Une autre option pourrait consister à écrire un hook post-commit qui effectue le push.

Je pense que vous pourriez mal comprendre le workflow pour lequel git a été conçu. (Pour clarifier / corriger ce que je voulais dire dans le commentaire, vous n’avez pas besoin de l’ git add . , car la commande commit -a généralement le même objective – append les modifications qui n’ont pas encore été effectuées, si les fichiers ont déjà été ajoutés)

Typiquement, vous ferez quelque chose comme ceci:

 # make some changes $ git commit -a -m "Changed something" # make some more changes $ git commit -a -m "Changed something else" 

lavez, rincez, répétez jusqu’à ce que vous ayez terminé la fonction X ou que vous vous trouviez à un point d’arrêt ou que vous souhaitiez simplement que d’autres personnes voient ce que vous avez fait. Alors tu fais

 $ git push 

Git n’est pas SVN – mais il semble que vous essayiez de l’utiliser comme tel. Vous pourriez trouver certaines des ressources à la fin de l’article ici utiles.

Je l’utilise dans mon fichier .bash_profile

 gitpush() { git add . git commit -m "$*" git push } alias gp=gitpush 

Il s’exécute comme

 gp A really long commit message 

N’oubliez pas d’exécuter source ~/.bash_profile après avoir enregistré l’alias.

Définir comme alias dans bash:

 $ alias lazygit="git add .; git commit -a -m '...'; git push;"; 

Appeler:

 $ lazygit 

(Pour rendre cet alias permanent, vous devez l’inclure dans votre fichier .bashrc ou .bash_profile)

Vous pouvez utiliser le script bash, définir un alias pour lancer une commande ou un groupe de commandes

 git commit -am "your message" && git push 

Vous pouvez essayer gitu .

Pour la première fois (le noeud js doit être installé):

 npm install -g git-upload 

Après ça:

 gitu COMMIT_MSG 

Pour émettre ces trois commandes à la fois.

La bonne chose est que vous n’avez pas à vous inquiéter lorsque vous réinstallez votre système ou lorsque vous voulez le faire sur différents ordinateurs et qu’aucune modification de fichier n’est nécessaire. Cela fonctionne également sur différentes plates-formes (pas seulement Linux et Mac, mais aussi Windows sous l’invite de commande comme cmd et powershell ) juste que vous devez installer npm et nodejs ( git bien sûr).

Si le fichier est déjà suivi, vous n’avez pas besoin de lancer git add , vous pouvez simplement écrire git commit -am 'your message'

Si vous ne voulez pas écrire un message de validation, vous pouvez envisager de faire quelque chose comme:

git commit --allow-empty-message -am ''

Comme mentionné dans cette réponse, vous pouvez créer un alias git et lui atsortingbuer un ensemble de commandes. Dans ce cas, ce serait:

 git config --global alias.add-com-push '!git add . && git commit -a -m "commit" && git push' 

et l’utiliser avec

 git add-com-push 

Si vous voulez modifier votre message de validation mieux, je veux dire append plus d’une ligne, etc … alors

 git commit -a && git push 

va ouvrir l’éditeur et une fois que vous enregistrez le message, il le poussera également.

Sous Linux / Mac, cette option très pratique devrait également fonctionner

 git commit -am "IssueNumberIAmWorkingOn --hit Enter for a new line > A detail here --hit Enter > Another detail here --hit Enter > Third line here" && git push --hit Enter and it will be there 

J’utilise un fichier batch:

 @ECHO OFF SET /p comment=Comment: git add * git commit -a -m "%comment%" git push 

La solution la plus simple serait de:

 git commit -a -m "commit" && git push 

git add est déjà contenu dans le paramètre -a de commit, mais si vous le souhaitez, vous pouvez tous les connecter:

 git add . && git commit -a -m "commit" && git push 

Il y a quelques problèmes avec les scripts ci-dessus:

shift “supprime” le paramètre $ 1, sinon “push” le lira et “le comprendra mal”.

Mon conseil:

git config –global alias.acpp ‘! git add -A && branchatu = “$ (référence symbolique HEAD 2> / dev / null)” && branchatu = $ {branchatu ## refs / heads /} && git commit – m “$ 1” && shift && git pull -u origine $ branchatu && git push -u origine $ branchatu ‘

Lorsque vous voulez un comportement de git commit de type svn, utilisez-le dans vos alias git dans votre fichier .gitconfig.

commit = "!f() { git commit \"$@\" && git push; };f"

J’ai fait ce script .sh pour la commande

 #!/bin/sh cd LOCALDIRECTORYNAME/ git config --global user.email "YOURMAILADDRESS" git config --global user.name "YOURUSERNAME" git init git status git add -A && git commit -m "MASSAGEFORCOMMITS" git push origin master 

Comme la question ne spécifie pas quel shell, voici la version eshell basée sur les réponses précédentes. Cela va dans le fichier alias eshell, qui pourrait se trouver dans ~ / .emacs.d / eshell / alias J’ai ajouté la première partie z https://github.com/rupa/z/ qui vous permet d’accéder rapidement à un répertoire , afin que cela puisse être exécuté quel que soit votre répertoire actuel.

 alias census z cens; git add .; git commit -m "fast"; git push 

Ajoutez dans ~/.bash_profile pour append, valider et pousser avec une commande put:

 function g() { git commit -a -m "$*"; git push; } 

Usage:

 g your commit message g your commit message 'message' 

Aucune citation n’est nécessaire bien que vous ne puissiez pas utiliser de points-virgules ou de parenthèses dans vos messages de validation (les guillemets simples sont autorisés). Si vous le souhaitez, insérez simplement des guillemets dans votre message, par exemple:

 g "your commit message; (message)" 

Pour créer un commentaire dans votre message, procédez comme suit:

 g "your commit message: > your note" 

Il y a aussi une fonction pour append et valider de la même manière:

 function c() { git add --all; git commit -m "$*"; } 

Fonctionne exactement de la même manière que g fonctionne et a les mêmes contraintes. Il suffit de mettre c place. Par exemple

 c your commit message 

Vous pouvez également append un alias pour pousser vers la télécommande:

 alias p='git push' 

Usage:

 p 

Cela équivaut à 2 lettres, c et p vous utilisez pendant que vous travaillez avec votre repository git. Ou vous pouvez utiliser g au lieu de tout faire avec une seule lettre.

Liste complète des alias et fonctions: https://gist.github.com/matt360/0c5765d6f0579a5aa74641bc47ae50ac

En lazygit réponse lazygit , la solution suivante ajoute une vérification de l’utilisateur pour vérifier les modifications avant de pousser. Il annulera les commandes si elles sont annulées. Et tout cela se produira si et seulement si il y a des changements dans le repo local.

 ### SAFER LAZY GIT function lazygit() { git add . if git commit -a -m "$1"; then read -r -p "Are you sure you want to push these changes? [y/N]} " response case "$response" in [yY][eE][sS]|[yY]) git push ;; *) git reset HEAD~1 --soft echo "Reverted changes." ;; esac fi } 

Si vous utilisez une coquille de poisson (en vous basant sur la réponse de btse):

Enregistrez ce fichier dans ‘~ / .config / fish / functions’ en tant que ‘quickgit.fish’. Créez le répertoire s’il n’existe pas. ‘–git-dir = $ PWD / .git’ Garantit que nous exécutons les commandes git sur le projet git où nous avons appelé la fonction

 function quickgit # This is the function name and command we call git --git-dir=$PWD/.git add . # Stage all unstaged files git --git-dir=$PWD/.git commit -a -m $argv # Commit files with the given argument as the commit message git --git-dir=$PWD/.git push # Push to remote end 

Redémarrez le terminal, accédez au projet, apportez les modifications, et maintenant vous pouvez appeler le message d’exemple “quickgit” “. Les modifications seront désormais ajoutées, validées et poussées :).

Peut également être trouvé sous forme de liste ici: https://gist.github.com/Abushawish/3440a6087c212bd67ce1e93f8d283a69

Ceci est parfait pour le regroupement de commandes.

Commandes de regroupement

{ liste; } En plaçant une liste de commandes entre accolades, la liste est exécutée dans le contexte actuel du shell. Aucun sous-shell n’est créé. Le point-virgule (ou nouvelle ligne) de la liste suivante est requirejs.

 legit(){ git add --all; git commit -m "$1"; git push origin master; } legit 'your commit message here'