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.
Vous voudrez peut-être essayer gitsh . De leur readme:
Le programme
gitsh
est un shell interactif pour git. Depuisgitsh
, 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:
Remarque: Je ne l'ai pas utilisé moi-même.
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
.
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.
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'
Utilisez votre éditeur.
Tapez la commande comme commit
depuis votre éditeur préféré comme vs code et soyez plus efficace avec git:
Ou tapez git
pour obtenir toutes les commandes:
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
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".
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").
%undo
commande supprime la dernière commande de la pile%run
commande exécute les commandes dans la pile et efface la pile%exit
la commande ferme la CLI sans rien fairectr+c
équivaut à exécuter %run; %exit
git.history
dans le même dossier que le scriptgit
au début de la commande et le script ne le dupliquera pas ( E.G: git init
ne devient pas git git init
)init
add .
stage .
commit -m "inital commit"
%run; %exit
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
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.
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
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.
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.
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
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.
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.
Dans le coin supérieur droit, la deuxième icône binoculaire est utilisée pour installer les extensions.
Extension de recherche brackets git
comme l'image ci-dessus et installez-la.
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 .