Omitir “git” da série de comandos git

0

Quando estou trabalhando com o git, muitas vezes me pego digitando uma série de comandos que começam com 'git' seguido por vários argumentos.

Existe alguma maneira de entrar em um 'git-mode' que me permita usar todos os comandos do git sem o prefixo do git?

Por exemplo, em vez de digitar os seguintes comandos:

git fetch
git status 
git diff
git add file.txt
git commit 
git push

Eu gostaria de usar:

enter-git-mode
fetch
status 
diff
add file.txt
commit 
push
exit-git-mode
    
por PaulrBear 28.12.2017 / 20:26

3 respostas

1

Se você estiver disposto a estar no "git-mode" o tempo todo, a resposta simples é colocar os seguintes comandos:

alias fetch='git fetch'
alias status='git status'
alias diff='git diff'
alias add='git add'
alias commit='git commit'
alias push='git push'

no seu ~/.bashrc . Mas isso pode ser indesejável, se apenas porque existe um comando regular chamado diff , e você não conseguiria acessá-lo se diff tiver alias para git diff 1 . Então, o próximo, pequeno, aumento na complexidade é configurá-lo para que os aliases possam ser ativados e desativados dinamicamente. Você pode fazer isso com

alias enter-git-mode="alias fetch='git fetch'; alias status='git status'; alias diff='git diff'; alias add='git add'; alias commit='git commit'; alias push='git push'"
alias exit-git-mode="unalias fetch status diff add commit push"

Então, agora enter-git-mode é um comando (alias) que define os primeiros seis aliases, e exit-git-mode é um comando que os undefine.

Você pode dividir esse longo comando em várias linhas, se quiser:

alias enter-git-mode="alias fetch='git fetch';   alias status='git status';
                      alias diff='git diff';     alias add='git add';
                      alias commit='git commit'; alias push='git push'"
alias exit-git-mode="unalias fetch status diff add commit push"

Isso permite que você use esses comandos como qualquer outro comando; por exemplo,

date; status; date              # A simple way of seeing how long a command takes.
time add .
commit &
commit && push
diff > differences.txt

e autocompletar e você pode misturar comandos Unix / Linux regulares com comandos git - exceto, é claro, você não pode executar diff 1 .

Obviamente, isso não manipula magicamente os comandos all git . Se você quiser lidar com mais subcomandos (por exemplo, archive ou branch ), você precisa adicioná-los aos aliases.

por 07.02.2018 / 04:05
2

Existem algumas ferramentas que fazem isso. Um deles é gitsh e a página README.md lista um pouco mais. Isso está fornecendo muito mais do que simplesmente inserir git em seus comandos, mas ainda pode atender às suas necessidades.

Exemplo de uso do README.md:

sh$ gitsh
gitsh% status
gitsh% add .
gitsh% commit -m "Ship it!"
gitsh% push
gitsh% ctrl-d
sh$
    
por 30.12.2017 / 20:06
1

Um script de shell chamado git-mode deve funcionar:

#!/bin/bash

echo -n "> "
while read line; do
    case $line in
        fetch*) git fetch
                ;;
        status*) git status
                 ;;
        # and so on
     esac

     echo -n "> "
done

Na prática, provavelmente seria apenas alias git to g permanecer flexível (ou git add to gadd , git fetch to gfetch etc.).

    
por 30.12.2017 / 19:15

Tags