The Git Push Command
Introdução ao Push
Na comunicação através do Push, o equipamento busca proativamente por comandos a executar através de requisições HTTP enviadas periodicamente ao servidor externo para o qual esteja configurado.
Quando não há nenhum comando a ser executado pelo equipamento, o servidor deve enviar uma resposta vazia. Caso contrário, o servidor deve responder o comando a ser realizado e os parâmetros correspondentes.
Após o equipamento executar o comando lido do servidor, ele envia nova requisição contendo o resultado da operação realizada. A esta requisição é esperada uma resposta vazia, que encerra a transação de Push. Após cada comando executado, o equipamento já realizará nova requisição de /push, possibilitando a execução de múltiplos comandos em sequência.
Para utilizar o Push é necessário definir alguns parâmetros de configuração descritos em push_server.
Evento: busca de comando no servidor
O equipamento faz requisições periódicas ao servidor para verificar se há algum push do servidor.
O método HTTP usado é o GET e todos os parâmetros são enviados através da query string.
GET /push
Parâmetros
- deviceId (int 64) : Id do equipamento que está fazendo a request.
Respostas
Retorno de comando para o equipamento
Mensagem de retorno do servidor para o equipamento após um evento de tentativa de push.
Resultado da análise da tentativa de push.
Exemplo da resposta à requisição /push
{
verb: "POST",
endpoint: "load_objects",
body: { object: "users" },
contentType: "application/json"
}
Evento: resultado de comando
Envia o resultado da execução do push para o servidor. Essa requisição contém o resultado do comando executado no equipamento.
O método HTTP utilizado é o POST.
POST /result
Parâmetros
- deviceId (int) : Id do equipamento que está fazendo a request. (Este parâmetro é enviado na query string)
- response (string) : Contém a resposta dada pela API com a execução do push. Consulte a documentação do comando para informações do formato da resposta. Note que este parâmetro estará presente somente se não ocorrer erro durante a operação
- error (string) : Especifica o erro que ocorreu durante a execução do push. Note que este parâmetro estará presente somente se ocorrer algum erro.
Exemplo de requisição
Requisição com o resultado de listar usuários.
{
"response": {
"users": [
{
"id":1,
"registration": "Teste",
"name": "Walter White",
"password": "Heisenberg",
"salt": "",
"expires": 0,
"user_type_id": 0,
"begin_time": 0,
"end_time": 0
}
]
}
}
Exemplo de resposta:
A resposta para essa requisição é vazia.
O comando git puder explicado
O comando git push permite que você envie (ou em tradução literal, empurre) os commits de sua branch e repositório Git local para o seu repositório remoto.
Para poder fazer um git push para seu repositório remoto, você deve garantir que todas as suas alterações no repositório local sejam confirmadas.
A sintaxe deste comando é a seguinte:
git push <repo name> <branch name>
Existem diversas opções diferentes que você pode passar com o comando, você pode aprender mais sobre elas na documentação do Git ou executar git push --help.
Enviar para um repositório e ramificação remotos específicos
Para enviar código por push, você deve primeiro clonar um repositório em sua máquina local
# Once a repo is cloned, you'll be working inside of the default branch (the default is `master`)
git clone https://github.com/<git-user>/<repo-name> && cd <repo-name>
# make changes and stage your files (repeat the `git add` command for each file, or use `git add .` to stage all)
git add <filename>
# now commit your code
git commit -m "added some changes to my repo!"
# push changes in `master` branch to github
git push origin master
Para saber mais sobre filiais confira os links abaixo:
Envie para um repositório remoto específico e todas as ramificações nele
Se quiser enviar todas as suas alterações para o repositório remoto e todas as ramificações nele, você pode usar:
git push --all <REMOTE-NAME>
no qual:
- --all é o sinalizador que sinaliza que você deseja enviar todas as ramificações para o repositório remoto
- REMOTE-NAME é o nome do repositório remoto para o qual você deseja enviar
Envie para um branch específico com parâmetro force
Se você quiser ignorar as alterações locais feitas no repositório Git no Github (o que a maioria dos desenvolvedores faz para um hot fix no servidor de desenvolvimento), então você pode usar o comando —force para enviar, ignorando essas alterações.
git push --force <REMOTE-NAME> <BRANCH-NAME>
no qual:
- REMOTE-NAME é o nome do repositório remoto para o qual você deseja enviar as alterações
- BRANCH-NAME é o nome do branch remoto para o qual você deseja enviar suas alterações
Push ignorando o gancho pré-push do Git
Por padrão, git push acionará a --verify alternância. Isso significa que o git executará qualquer script pré-push do lado do cliente que possa ter sido configurado. Se os scripts pré-push falharem, o git push também falhará. (Ganchos pré-Push são bons para fazer coisas como verificar se as mensagens de commit confirmam os padrões da empresa, executar testes de unidade, etc.). Ocasionalmente, você pode desejar ignorar esse comportamento padrão, por exemplo, no cenário em que deseja enviar suas alterações para um branch de recurso para outro contribuidor extrair, mas suas alterações de trabalho em andamento estão interrompendo os testes de unidade. Para ignorar o gancho, basta inserir seu comando push e adicionar o sinalizador --no-verify