web-dev-qa-db-fra.com

Comment éviter de taper "git" au début de chaque commande Git?

Je me demande s'il existe un moyen d'éviter d'avoir à taper le mot git au début de chaque commande Git.

Ce serait bien s'il y avait un moyen d'utiliser la commande git une seule fois au début après avoir ouvert une invite de commande pour entrer dans "Git mode".

Par exemple:

git>

Après quoi, chaque commande que nous tapons est interprétée par défaut comme une commande Git.

D'une manière similaire à la façon dont nous utilisons MySQL Shell pour écrire des commandes de base de données:

mysql>

Cela m'évitera d'avoir à taper git des centaines de fois par jour.

REMARQUE: J'utilise git-bash , sous Windows.

190
Nocturnal

Vous voudrez peut-être essayer gitsh . De leur readme:

Le programme gitsh est un shell interactif pour git. Depuis gitsh, vous pouvez exécuter n'importe quelle commande git, même en utilisant vos alias et votre configuration locaux.

  • Les commandes Git ont tendance à venir en groupes. Évitez de taper git encore et encore en les exécutant dans un shell git dédié:
sh$ gitsh
gitsh% status
gitsh% add .
gitsh% commit -m "Ship it!"
gitsh% Push
gitsh% ctrl-d
sh$

Ou jetez un œil aux autres projets qui y sont liés:

  • git-sh - Un shell bash personnalisé avec une invite Git, des alias et une complétion.
  • gitsh - Un simple Git Shell écrit en Perl.
  • repl - Enveloppe tout programme avec des sous-commandes dans un REPL.

Remarque: Je ne l'ai pas utilisé moi-même.

190
alfunx

Un Perl one-liner qui fera cela:

Perl -nE 'BEGIN {print "git > "} system "git $_"; print "git > "'

Cela exécutera tout ce que vous tapez, préfixé avec git. Et cela continuera jusqu'à ce que vous appuyiez sur ^D.

115
user8549967

Ce n'est pas exactement ce que vous demandez, mais vous pouvez configurer des alias Shell dans votre ~/.bashrc pour les commandes Git que vous utilisez le plus fréquemment:

alias commit='git commit'
alias checkout='git checkout'
...

Notez également que vous pouvez créer des alias dans Git lui-même:

git config --global alias.ci commit
git config --global alias.co checkout
...

Cela vous permet de taper git ci au lieu de git commit, etc.

57
Thomas

Je suis un grand fan de l'utilisation d'alias dans ~/.bash_profile pour mon GitBash. Si vous optez pour cette approche, voici quelques-unes de mes préférées:

# git
alias gw='git whatchanged'
alias gg='git grep -n -C8'
alias ggi='git grep -i -n -C8'
alias gb='git branch'
alias gbd='git branch -D'
alias gba='git branch -a'
alias gc='git checkout'
alias gcp='git cherry-pick'
alias gfo='git fetch Origin'
alias s='git status'
alias gmom='git merge Origin/master'
alias grom='git rebase Origin/master'
alias gpom='git pull Origin master'
alias pplog='git log --oneline --graph --decorate'
32
JacobIRR

Utilisez votre éditeur.

Tapez la commande comme commit depuis votre éditeur préféré comme vs code et soyez plus efficace avec git:

enter image description here

Ou tapez git pour obtenir toutes les commandes:

enter image description here

31
prosti

Un de mes amis a fait un petit script bash qui accomplit cela. Cela s'appelle Replify .

$ replify git
Initialized REPL for [git]
git> init
Initialized empty Git repository in /your/directory/here/.git/

git> remote add Origin https://your-url/repo.git

git> checkout -b new-branch
Switched to a new branch 'new-branch'

git> Push
26
Sam Weaver

Voici une autre façon. Ce n'est pas non plus tout à fait ce qui a été demandé, mais je l'utilise depuis un certain temps et c'est plutôt sympa. Ajoutez la ligne suivante à votre ~/.bashrc:

complete -E -W git

Maintenant, appuyer sur Tab à une invite Bash vide va taper "git".

23
nomadictype

Je sais que c'est une réponse très tardive, mais cette question m'a vraiment frappé parce que j'ai été traiter avec souffrant de ce genre de répétition depuis un bon moment maintenant.

Je ne suis pas sûr de vous mais honnêtement non (je répète NE FAITES PAS ) veulent créer des alias pour chaque commande git, j'ai donc écrit un script python appelé NoGit pour résoudre ce problème:

#!/usr/bin/env python
import sys, os, signal, atexit, readline, subprocess

commands, stop, history_file = [], False, os.path.join(os.getcwd(), "git.history")

def run_commands():
  stop = True
  for cmd in commands:
    command = ["git" if not cmd.startswith("git ") else ""]
    command = [cmd] if command[0] == "" else [command[0], cmd]
    subprocess.Popen(command).communicate()
    commands = []

def signal_handler(sig, frame):
  run_commands()
  sys.exit(0)

try:
  readline.read_history_file(history_file)
  signal.signal(signal.SIGINT, signal_handler)

  while True:
    if stop == True:
      break
    command = input("git> ")
    if command == "%undo":
      commands.pop()
    Elif command == "%run":
      run_commands()
    Elif command == "%exit":
      sys.exit(0)
    else:
      commands += [cmd.strip() for cmd in command.split(";")]

  signal.pause()
  readline.set_history_length(-1)
except IOError:
  pass

atexit.register(readline.write_history_file, history_file)

NoGit est un simple script python pour empêcher la répétition inutile du mot-clé "git").

Documentation:

  • les %undo commande supprime la dernière commande de la pile
  • les %run commande exécute les commandes dans la pile et efface la pile
  • les %exit la commande ferme la CLI sans rien faire
  • en appuyant sur ctr+c équivaut à exécuter %run; %exit
  • le script enregistre les commandes qui ont été exécutées dans un fichier appelé git.history dans le même dossier que le script
  • vous pouvez ajouter plusieurs commandes sur une seule ligne à l'aide d'un point-virgule
  • vous pouvez utiliser le mot clé git au début de la commande et le script ne le dupliquera pas ( E.G: git init ne devient pas git git init)

Exemples de commandes:

  1. init
  2. add .
  3. stage .
  4. commit -m "inital commit"
  5. %run; %exit

Informations supplémentaires (pour les utilisateurs Linux):

Si vous le souhaitez, vous pouvez supprimer le .py extension et le convertir en un exécutable en utilisant:

mv ./git.py ./git
chmod +x ./git

Ensuite, au lieu d'appeler le script comme ceci:

python3 git.py

Vous exécuteriez ceci à la place:

./git

Informations supplémentaires (pour les paresseux):

Si vous êtes paresseux et que vous ne voulez pas taper un ./ alors vous pouvez déplacer ce script vers votre /bin/ dossier et créez un alias pour celui-ci.

Si vous êtes vraiment, vraiment paresseux, utilisez les commandes suivantes:

Sudo cp ./git /bin/nogit
Sudo chmod +x /bin/nogit
alias nogit='/bin/nogit'

Si vous êtes vraiment, vraiment, vraiment paresseux, copiez et collez le one-liner suivant:

Sudo cp ./git /bin/nogit && Sudo chmod +x /bin/nogit && alias nogit='/bin/nogit'

Si votre paresse a atteint des niveaux jusque-là inconnus de l'humanité, voici une version plus compacte du même one-liner:

Sudo cp ./git /bin/nogit;Sudo chmod +x /bin/nogit;alias nogit='/bin/nogit'

Bonne chance.

20
LogicalBranch

Une autre approche qui fonctionnera avec toutes les commandes: utilisez Ctrl + R (reverse-i-search).

Le reverse-i-search vous permet de rechercher l'historique de vos commandes. Répétez Ctrl + R après avoir appuyé sur votre chaîne de recherche pour répéter la recherche plus loin avec la même chaîne.

Vous n'avez besoin de taper une commande qu'une seule fois, puis vous pouvez rappeler cette commande à partir de n'importe quelle sous-chaîne de la commande. Dans la plupart des cas, vous pouvez rappeler des commandes très longues entières et leurs différentes variantes avec seulement deux à trois lettres de recherche bien placées. Aucune préconfiguration nécessaire autre que l'utilisation normale de votre shell et il s'adapte automatiquement à la façon dont vous avez utilisé le shell, tapez simplement la commande complète une fois et les commandes seront automatiquement ajoutées à votre historique de commandes.

  • git commit --amend: <Ctrl+R>am
  • git pull: <Ctrl+R>pu
  • git rebase --rebase-merges -i --onto Origin/develop Origin/develop feature/blue-header: <Ctrl+R>blu
  • git rebase --abort: <Ctrl-R>ab
  • git rebase --continue: <Ctrl-R>con
  • docker-compose stop && git pull && make && docker-compose up -d: <Ctrl-R>up
  • etc

De plus, Ctrl-R ne fonctionne pas seulement sur bash, mais sur de nombreux programmes qui utilisent la bibliothèque readline (et il y en a beaucoup), comme Python Shell, IPython, mysql Shell, psql Shell , irb (Ruby), etc.

17
Lie Ryan

Dans votre exemple, vous le comparez à une invite MySql. La façon dont cela fonctionne est qu'un processus MySql démarre et vous donnez vos commandes à ce processus. En tant que tel, pourquoi ne pas écrire quelque chose de similaire dans la langue de votre choix? Voici un exemple simple en C++:

#include <iostream>
#include <cstdlib>

int main(int argc, char *argv[]){
    while(true){
        std::cout << "git> ";
        std::cout.flush();
        std::string command;
        std::getline(std::cin, command);
        if(command == "exit") break;
        std::system("git " + command);
    }

    return 0;
}

Veuillez noter que je viens d'écrire cela de mémoire et que je ne l'ai pas vérifié avec un compilateur. Il peut y avoir des erreurs de syntaxe triviales.

15
john01dav

Pour les choses de base, vous pouvez faire:

function ggit(){ while true; do printf 'git> '; read; eval git $REPLY; done }
git> status
On branch master
Your branch is ahead of 'Origin/master' by 1 commit.
  (use "git Push" to publish your local commits)

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    deleted:    yarn.lock

no changes added to commit (use "git add" and/or "git commit -a")
git> add .
git> status
On branch master
Your branch is ahead of 'Origin/master' by 1 commit.
  (use "git Push" to publish your local commits)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    yarn.lock

git>

Quittez avec ctrl + c

13
Umur Kontacı

Lorsque j'ai utilisé Windows 7 avec Conemu, j'ai ajouté ce qui suit à mon script de démarrage de l'environnement de développement:

doskey g=git $*

Avec cela, je pouvais simplement utiliser la commande g au lieu de taper git. La dernière fois que j'ai essayé avec Windows 10 et Conemu, cela n'a pas fonctionné, il y a un bug, je pense, mais ça vaut le coup d'essayer.

2
Adamsan

Utilisez un éditeur de parenthèses, il est facile d'utiliser votre code et vos commandes git, il possède également de nombreuses fonctionnalités.

enter image description here

Dans le coin supérieur droit, la deuxième icône binoculaire est utilisée pour installer les extensions.

enter image description here

Extension de recherche brackets git comme l'image ci-dessus et installez-la.

enter image description here

Encore une fois dans le coin supérieur droit, la quatrième icône s'affichera, il vous suffit donc de cliquer et de voir les modifications comme l'image ci-dessus.

Si vous souhaitez installer des supports, utilisez les commandes suivantes:

Sudo add-apt-repository ppa:webupd8team/brackets
Sudo apt-get update
Sudo apt-get install brackets

Pour plus d'informations, vous pouvez lire: Comment installer Brackets Code Editor dans Ubuntu et Linux Mint on buntupit .

2
akash