git adicionar, commit e empurrar comandos em um?
git add .
git commit -a -m "commit" (do not need commit message either)
git push
Às vezes só mudo uma letra, acolchoado CSS ou algo assim. Ainda assim, eu tenho que escrever todos os três comandos para empurrar as mudanças. Há muitos projetos onde eu sou apenas um empurrador, então este comando seria incrível!
21 answers
A construir a partir da resposta de @Gavin:
Fazer do lazygit uma função em vez de um pseudónimo permite-lhe passar-lhe um argumento. Acrescentei o seguinte ao meu .bashrc (or .bash_profile if Mac):function lazygit() {
git add .
git commit -a -m "$1"
git push
}
Isto permite - lhe fornecer uma mensagem de commit, como
lazygit "My commit msg"
É claro que se poderia reforçar ainda mais esta situação aceitando ainda mais argumentos, como por exemplo o local remoto para onde empurrar ou o ramo.
Acabei por adicionar um nome falso ao meu ficheiro .gitconfig
:
[alias]
cmp = "!f() { git add -A && git commit -m \"$@\" && git push; }; f"
Uso : git cmp "Long commit message goes here"
Adiciona todos os ficheiros, depois usa o comentário para a mensagem de commit e empurra-a para a origem.
Eu acho que é uma solução melhor porque você tem controle sobre o que é a mensagem de commit.A alcunha também pode ser definida a partir da linha de comandos, o que a adiciona à sua .gitconfig
:
git config --global alias.cmp '!f() { git add -A && git commit -m "$@" && git push; }; f'
git config alias.acp '! git commit -a -m "commit" && git push'
Que define uma alcunha que corre commit
e push
. Use-o como git acp
. Por favor, esteja ciente de que esses pseudônimos "shell" são sempre executados a partir da raiz do seu repositório git.
commit -a
normalmente serve o mesmo propósito - adicionando quaisquer alterações que ainda não foram encenadas, se os arquivos já foram adicionados)
Normalmente vais fazer algo assim:
# make some changes
$ git commit -a -m "Changed something"
# make some more changes
$ git commit -a -m "Changed something else"
Lave, lave, repita, até terminar a funcionalidade X, ou esteja num ponto de paragem, ou só queira que as outras pessoas vejam o que tem terminar. Então você faz
$ git push
O Git não é SVN - mas parece que estás a tentar usá-lo como tal. Você pode encontrar alguns dos recursos no final do artigo aqui para ser de alguma utilidade.
gitpush() {
git add .
git commit -m "$*"
git push
}
alias gp=gitpush
Ele executa como
gp A really long commit message
Não se esqueça de correr depois de salvar o nome falso.
Também conhecido por in bash:
$ alias lazygit="git add .; git commit -a -m '...'; git push;";
Chama-lhe:
$ lazygit
[[3]} (para tornar este pseudónimo permanente, teria de O incluir no seu .bashrc or .bash_profile)
Pode usar o programa bash, definir o nome alternativo para lançar qualquer comando ou grupo de comandos
git commit -am "your message" && git push
Podes tentar gitu .
Pela primeira vez (o nó js tem de ser instalado):
npm install -g git-upload
Depois disso:
gitu COMMIT_MSG
Para emitir esses três comandos ao mesmo tempo.
A coisa boa é que você não tem que se preocupar quando você reinstalar o seu sistema ou quando você quer fazer isso em computadores diferentes e nenhuma modificação de arquivo é necessária.
Isto também Funciona em diferentes plataformas (Não apenas Linux e Mac, mas também Windows sob a linha de comandos como cmd
e powershell
apenas que você tem que instalar npm
e nodejs
(git
claro.
A solução mais simples seria:
git commit -a -m "commit" && git push
git add
já está contido em-um parâmetro de commit, mas se quiser pode ligá-los a todos:
git add . && git commit -a -m "commit" && git push
Se o ficheiro já estiver a ser seguido, então não precisa de correr {[[0]}, pode simplesmente escrever git commit -am 'your message'
Se você não quiser escrever uma mensagem de commit você pode considerar fazer algo como
git commit --allow-empty-message -am ''
Como mencionado em esta resposta , você pode criar um git alias e atribuir um conjunto de comandos para ele. Neste caso, seria:
git config --global alias.add-com-push '!git add . && git commit -a -m "commit" && git push'
E usa-o com
git add-com-push
Se quiser editar melhor a sua mensagem de commit, quero dizer adicionar mais do que uma linha, etc... então
git commit -a && git push
Irá abrir o editor e assim que gravar a mensagem, irá também carregá-la.
No Linux/Mac, Esta opção prática também deve funcionar
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
Uso um ficheiro em lote:
@ECHO OFF
SET /p comment=Comment:
git add *
git commit -a -m "%comment%"
git push
Existem alguns problemas com os scripts acima:
Shift "remove" o parâmetro $1, caso contrário, "push" irá lê-lo e "interpretá-lo mal".
A minha dica:
Git config -- global alias.acpp!git add - a & & branchatu= " $(git symbolic-ref HEAD 2> / dev / null) " & branchatu=${branchatu# # refs / heads/} && git commit - m "$1 " & & shift & & git pull-u origin $branchatu & & git origem push-u $branchatu '
Quando quiser um comportamento semelhante ao svn do git commit, use isto nos seus pseudónimos git no seu .gitconfig
commit = "!f() { git commit \"$@\" && git push; };f"
Eu fiz isto. Sh script para o comando
#!/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
Uma vez que a pergunta não especifica qual shell, aqui está a versão resumida baseada nas respostas anteriores. Isto vai para o arquivo eshell alias, que pode estar em~/.emacs.d/eshell / alias acrescentei a primeira parte z https://github.com/rupa/z/ que lhe permite cd rapidamente para uma pasta, para que esta possa ser executada independentemente da sua pasta actual.
alias census z cens; git add .; git commit -m "fast"; git push
Adicionar em ~/.bash_profile
para adicionar, enviar e empurrar com um comando colocar:
function g() { git commit -a -m "$*"; git push; }
Utilização:
g your commit message
g your commit message 'message'
Não são necessárias aspas, embora não possa usar pontos-e-vírgula ou parêntesis nas suas mensagens de commit (são permitidas aspas simples). Se você quiser qualquer um destes basta colocar aspas duplas em sua mensagem, por exemplo:
g "your commit message; (message)"
Para criar um comentário na sua mensagem faça:
g "your commit message:
> your note"
Também há uma função para adicionar e cometer em um semelhante way:
function c() { git add --all; git commit -m "$*"; }
Funciona exactamente da mesma maneira que g
funciona e tem as mesmas restrições. Põe antes {[10] }.
Por exemplo
c your commit message
Também pode adicionar um pseudónimo por empurrar para o remoto:
alias p='git push'
Utilização:
p
Isso equivale a 2 Letras, c
e p
que usa enquanto trabalha com o seu repositório de git. Ou você pode usar g
em vez de fazer tudo com apenas uma letra.
Lista completa dos pseudónimos e funcao: https://gist.github.com/matt360/0c5765d6f0579a5aa74641bc47ae50ac
Edifício ao largo da lazygit
resposta, a seguinte solução adiciona uma verificação do Usuário para verificar as alterações antes de empurrar. Ele irá reverter os comandos se cancelado. E tudo isso acontecerá se e somente se houver mudanças no 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
}
Se estiver a utilizar concha de peixe (a partir da resposta da btse):
Guarde este ficheiro em'~/.configuração/fish / functions ' as ' quickgit.fish'. Crie o diretório se ele não existir. '--git-dir=$PWD/.o git ' garante que executamos os comandos git contra o projecto git onde chamamos a função
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
Reiniciar o terminal, navegar para projectar, fazer alterações e agora pode chamar 'mensagem de exemplo'ao ' quickgit'. As mudanças serão agora adicionadas, comprometidas e empurradas :).
Também pode ser encontrado como um Gist aqui: https://gist.github.com/Abushawish/3440a6087c212bd67ce1e93f8d283a69
Isto é perfeito para o agrupamento de comandos.
{ lista;} A colocação de uma lista de comandos entre chavetas faz com que a lista seja executada no contexto da linha de comandos actual. Não foi criada nenhuma subtileza. É necessária a lista ponto-e-vírgula (Ou Linha Nova) seguinte.
legit(){ git add --all; git commit -m "$1"; git push origin master; }
legit 'your commit message here'