Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.33.1 → 2.34.1 no changes
-
2.33.0
08/16/21
- 2.30.2 → 2.32.0 no changes
-
2.30.1
02/08/21
-
2.30.0
12/27/20
- 2.24.1 → 2.29.3 no changes
-
2.24.0
11/04/19
- 2.23.1 → 2.23.4 no changes
-
2.23.0
08/16/19
- 2.22.2 → 2.22.5 no changes
-
2.22.1
08/11/19
- 2.21.1 → 2.22.0 no changes
-
2.21.0
02/24/19
- 2.20.1 → 2.20.5 no changes
-
2.20.0
12/09/18
- 2.19.1 → 2.19.6 no changes
-
2.19.0
09/10/18
- 2.18.1 → 2.18.5 no changes
-
2.18.0
06/21/18
- 2.17.1 → 2.17.6 no changes
-
2.17.0
04/02/18
-
2.16.6
12/06/19
- 2.15.4 no changes
-
2.14.6
12/06/19
- 2.13.7 no changes
-
2.12.5
09/22/17
- 2.10.5 → 2.11.4 no changes
-
2.9.5
07/30/17
- 2.8.6 no changes
-
2.7.6
07/30/17
-
2.6.7
05/05/17
-
2.5.6
05/05/17
-
2.4.12
05/05/17
-
2.3.10
09/28/15
- 2.2.3 no changes
-
2.1.4
12/17/14
RESUMO
git send-email [<opções>] <arquivo|diretório|rev-list opções>… git send-email --dump-aliases
DESCRIÇÃO
Toma as correções informadas na linha de comando e as envia por e-mail. Os patches podem ser utilizados como arquivos, diretórios (que enviarão todos os arquivos no diretório) ou diretamente como uma lista de revisão. No último caso, qualquer formato aceito pelo git-format-patch[1] pode ser passado para o git-send-email.
O cabeçalho do e-mail é configurável através das opções da linha de comando. Se não utilizado na linha de comandos, o usuário será solicitado a informar uma interface ativada para o ReadLine que forneça as informações que forem necessárias.
Existem dois formatos aceitos para os arquivos patch:
-
arquivos no formato mbox
Isto é o que o git-format-patch[1] gera. Grande parte dos cabeçalhos e a formatação MIME são ignorados.
-
O formato original utilizado pelo script send_lots_of_email.pl feito pelo Greg Kroah-Hartman’s
Este formato espera que a primeira linha do arquivo tenha o valor "Cc:" e o "Assunto:" da mensagem como a segunda linha.
OPÇÕES
Composição
- --annotate
-
Revise e edite cada patch que você está prestes a enviar. O padrão é o valor de sendemail.annotate. Consulte a seção CONFIGURAÇÃO de sendemail.multiEdit.
- --bcc=<endereço>,…
-
Especifique um valor "Cco:" para cada e-mail. A predefinição é o valor do
sendemail.bcc.Esta opção pode ser utilizada várias vezes.
- --cc=<endereço>,…
-
Especifique um valor inicial "Cc:" para cada e-mail. A predefinição é o valor do
sendemail.cc.Esta opção pode ser utilizada várias vezes.
- --compose
-
Invoque um editor de texto (consulte
GIT_EDITORno git-var[1]) para editar uma mensagem introdutória para a série de patches.Quando a opção
--composeé utilizada, o git send-email utilizará os cabeçalhosFrom(De),Subject(Assunto), andIn-Reply-To(Em resposta a) definidos na mensagem. Caso o corpo da mensagem (a parte onde você digita após os cabeçalhos e uma linha em branco) contenha apenas linhas em branco (ou Git: prefixadas), o resumo não será enviado, porém os cabeçalhos "De", "Assunto" e "Em resposta a" serão utilizados, a menos que sejam removidos.Os cabeçalhos ausentes "From" ou "In-Reply-To" (em resposta a) serão solicitados.
Consulte a seção CONFIGURAÇÃO para a opção de configuração
sendemail.multiEdit. - --from=<endereço>
-
Especifique o destinatário dos e-mails. Caso não seja definido na linha de comando, o valor da opção de configuração
sendemail.fromé utilizado. Caso nem a opção da linha de comando nem a opção de configuraçãosendemail.fromestejam definidos, então o usuário será avisado para informar o valor. O valor predefinido para o prompt será o valor doGIT_AUTHOR_IDENTouGIT_COMMITTER_IDENTcaso isso não esteja definido, conforme retornado pelogit var -l. - --reply-to=<endereço>
-
Define o endereço para onde as respostas dos destinatários devem ir. Use isso se as respostas às mensagens forem para outro endereço além do especificado com o parâmetro
--from. - --in-reply-to=<identificador>
-
Faça o primeiro e-mail (ou todos os e-mails com
--no-thread) aparecer como uma resposta ao ID da mensagem informada, o que evita as quebras dos encadeamentos provendo uma nova série de patches. O segundo e-mail e os seguintes serão enviados como resposta de acordo com a configuração--[no-]chain-reply-to.Assim, por exemplo, quando
--threade--no-chain-reply-tosejam utilizados, o segundo e os patches subsequentes serão as respostas para o primeiro, como na ilustração abaixo, onde[PATCH v2 0/3]está como resposta para[PATCH 0/2]:[PATCH 0/2] Aqui está o que eu fiz... [PATCH 1/2] Limpeza e testes [PATCH 2/2] Implementação [PATCH v2 0/3] Aqui está uma nova rolagem [PATCH v2 1/3] Limpar [PATCH v2 2/3] Novos testes [PATCH v2 3/3] ImplementaçãoSomente é necessário caso
--composeseja definido. Caso--composenão seja definido, será solicitado ao usuário para informar um. - --subject=<texto>
-
Informe o assunto inicial do encadeamento do e-mail. Somente é necessário caso
--composeseja definido. Caso--composenão seja definido, será solicitado ao usuário para informar um. - --to=<endereço>,…
-
Define o destinatário principal dos e-mails que forem gerados. Em geral, este será o mantenedor "upstream" do projeto envolvido. A predefinição é o valor da opção de configuração
sendemail.transferEncoding; caso isso não seja definido, a predefinição retorna paraauto.Esta opção pode ser utilizada várias vezes.
- --8bit-encoding=<codificação>
-
Quando encontrar uma mensagem não ASCII ou um assunto que não declare a sua codificação, adicione os cabeçalhos/citações para indicar que estão codificados com <codificação>. A predefinição é o valor do sendemail.assume8bitEncoding; caso não esteja definido, o usuário será questionado caso qualquer arquivo não ASCII seja encontrado.
Observe que nenhuma tentativa é feita para validar a codificação.
- --compose-encoding=<codificação>
-
Define a codificação da mensagem que será escrita. A predefinição é o valor da opção de configuração sendemail.composeencoding; caso não esteja definido, assume-se o UTF-8.
- --transfer-encoding=(7bit|8bit|quoted-printable|base64|auto)
-
Define a codificação da transferência que será utilizada para enviar a mensagem através do SMTP. O 7bit falhará caso encontre uma mensagem não ASCII. a citação para impressão pode ser útil quando o repositório contém arquivos que contenham retornos de carro, porém dificulta muito a inspeção manual do arquivo de e-mail do patch bruto (com é gravado através de um MUA). a base64 é ainda mais à prova de idiotas, porém também é ainda mais estúpido. auto utilizará 8bit quando for possível e, caso contrário, será citado para impressão.
A predefinição é o valor da configuração
sendemail.transferEncoding; caso isso não seja definido, a predefinição retorna paraauto. - --xmailer
- --no-xmailer
-
Adicione (ou evite adicionar) o cabeçalho "X-Mailer:". A predefinição é que o cabeçalho seja adicionado, porém pode ser desligado redefinindo a variável de configuração
sendemail.xmailercomofalse.
Enviando
- --envelope-sender=<endereço>
-
Define o envelope do remetente utilizado para enviar os e-mails. É útil caso o seu endereço predefinido não seja o endereço registrado em uma lista. Para usar o endereço De, defina o valor para "auto". Caso utilize o binário do sendmail, você deverá ter privilégios adequados para poder utilizar o parâmetro
-f. A predefinição é o valor da variável de configuraçãosendemail.envelopeSender; caso não esteja definido, a escolha do envelope do remetente é deixada para o seu MTA. - --smtp-encryption=<criptografia>
-
Define a criptografia que será utilizada, ssl ou tls. Qualquer outro valor é revertido para o SMTP simples. A predefinição é o valor da opção de configuração
sendemail.smtpEncryption. - --smtp-domain=<FQDN>
-
Define o Nome de Domínio Totalmente Qualificado (FQDN) utilizado no comando HELO/EHLO para o servidor SMTP. Alguns servidores exigem que o FQDN corresponda ao seu endereço de IP. Caso não esteja definido, o comando
git send-emailtenta determinar o seu FQDN de forma automática. A predefinição é o valor da opção de configuraçãosendemail.smtpDomain. - --smtp-auth=<mecanismos>
-
Mecanismos SMTP-AUTH permitidos, listas separadas por um espaço. Está configuração impõem a utilização dos mecanismos listados. Exemplo:
$ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ...
Caso pelo menos um dos mecanismos definidos coincidir com os anunciados através do servidor SMTP e caso seja compatível pela biblioteca SASL utilizada, o mecanismo será utilizado para a autenticação. Caso nem a opção de configuração sendemail.smtpAuth nem a opção
--smtp-authforem utilizados, todos os mecanismos compatíveis através da biblioteca SASL poderão ser utilizados. O valor especial none pode ser informado para desativar completamente a autenticação, independentemente da opção--smtp-user - --smtp-pass[=<senha>]
-
A senha para o SMTP-AUTH. O argumento é opcional: Caso nenhum argumento seja definido, então um valor vazio é utilizado como uma senha. A predefinição é o valor da opção de configuração
sendemail.smtpPass, no entanto, a opção--smtp-passsempre substitui este valor.Além disso, as senhas não precisam ser definidas nos arquivos de configuração ou na linha de comando. Caso um nome de usuário seja definido (com
--smtp-userou`sendemail.smtpUser), porém nenhuma senha seja definida (com--smtp-passousendemail.smtpPass), uma senha é obtida utilizando o comando git-credential. - --no-smtp-auth
-
Desative a autenticação SMTP. É um atalho para
--smtp-auth=none - --smtp-server=<host>
-
Caso seja definido, define qual o servidor SMTP deve ser utilizado (como por exemplo, um domínio
smtp.example.comou um endereço IP). Como alternativa, é possível definir um nome do caminho completo de um programa semelhante ao sendmail; o programa deve ser compatível com a opção-i. O valor predefinido pode ser definido através da opção de configuraçãosendemail.smtpServer; a predefinição interna é procurar pelosendmailem/usr/sbin,/usr/libe$PATHcaso este programa esteja disponível, caso contrário retorna aolocalhost. - --smtp-server-port=<porta>
-
Define uma porta diferente da porta predefinida (os servidores SMTP normalmente ouvem na porta 25 smtp, porém também podem ouvir na porta de envio ou a porta smtp SSL comum 465); os nomes das portas simbólicos (como, por exemplo, "submission" em vez do 587) também são aceitos. A porta também pode ser definida com a variável de configuração
sendemail.smtpServerPort. - --smtp-server-option=<opção>
-
Caso seja definido, define qual a opção da saída que será usada pelo servidor SMTP. O valor predefinido pode ser definido pela opção de configuração
sendemail.smtpServerOption.A opção
--smtp-server-optiondeve ser repetida para cada opção que você queira passar para o servidor. Da mesma forma, as linhas diferentes nos arquivos de configuração devem ser utilizadas para cada opção. - --smtp-ssl
-
Legado para o pseudônimo --smtp-encryption ssl.
- --smtp-ssl-cert-path
-
O caminho para um armazenamento dos certificados CA confiáveis para a validação do certificado SMTP SSL/TLS (um diretório que foi processado pelo c_rehash ou um único arquivo contendo um ou mais certificados no formato PEM concatenados juntos: consulte verify(1) -CAfile e -CApath para mais informações sobre eles). Defina-o como um texto vazio para desativar a verificação do certificado. A predefinição retorna para o valor da variável de configuração
sendemail.smtpsslcertpath, caso seja definida, ou tenha a biblioteca de apoio SSL tenha sido compilada (o que deve ser a melhor opção na maioria das plataformas). - --smtp-user=<usuário>
-
O nome do usuário para o SMTP-AUTH. A predefinição é o valor da opção de configuração
sendemail.smtpUser; caso um nome de usuário não tenha sido definido(com--smtp-userousendemail.smtpUser), a tentativa de autenticação não será realizada. - --smtp-debug=0|1
-
Ative (1) ou desative (0) a geração da depuração. Se ativado, os comandos e respostas SMTP serão impressos. Útil para depurar problemas de conexão e a autenticação TLS.
- --batch-size=<num>
-
Alguns servidores de e-mail (smtp.163.com por exemplo) limitam a quantidade de e-mails que podem ser enviados por sessão (conexão) e isso causa uma falha no envio de muitas mensagens. Com esta opção, o "send-email" será desconectado após enviar a quantidade de
$<num>mensagens e aguardará alguns segundos (consulte --relogin-delay) e fará a reconexão para contornar esse limite. É possível utilizar alguma forma de auxiliar a credencial evitando a necessidade de redigitar a sua senha sempre que isso acontecer. A predefinição retorna para o valor da variável de configuraçãosendemail.smtpBatchSize. - --relogin-delay=<int>
-
Aguardando
$<int>segundos antes de se reconectar ao servidor SMTP. Utilizado em conjunto com a opção--batch-size. A predefinição retorna para o valor da variável de configuraçãosendemail.smtpReloginDelay.
Automatizando
- --no-[to|cc|bcc]
-
Limpa qualquer lista dos endereços "Para:", "Cc:", "Cco:" definidos anteriormente através da config.
- --no-identity
-
Limpa o valor lido anteriormente do
sendemail.identitydefinido através da config, caso exista. - --to-cmd=<comando>
-
Define um comando que será executado um por vez no arquivo patch que deve gerar as entradas "Para:". A saída deste comando deve ser um endereço de e-mail único por linha. A predefinição é o valor da opção de configuração sendemail.tocmd.
- --cc-cmd=<comando>
-
Define um comando que será executado um por vez no arquivo patch que deve gerar as entradas "Cc:". A saída deste comando deve ser um endereço de e-mail único por linha. A predefinição é o valor da opção de configuração
sendemail.ccCmd. - --[no-]chain-reply-to
-
Caso esteja definido, cada e-mail será enviado como uma resposta ao e-mail enviado anteriormente. Caso esteja desativado com a opção "--no-chain-reply-to", todos os e-mails posteriores ao primeiro, serão enviados como respostas para o primeiro e-mail enviado. Ao utilizar isso, é recomendável que o primeiro arquivo utilizado seja uma visão geral de toda a série de patches. É predefinido que esteja desativada, porém a variável de configuração
sendemail.chainReplyTopode ser utilizada para ativá-la. - --identity=<identidade>
-
Uma identidade de configuração. Quando informado, faz com que os valores na subseção sendemail.<identidade> tenham precedência sobre os valores na seção sendemail. A identidade predefinida é o valor existente em
sendemail.identity. - --[no-]signed-off-by-cc
-
Caso esteja definido, adicione os e-mails encontrados nas linhas Signed-off-by: ou Cc: à lista cc. A predefinição é o valor da opção de configuração
sendemail.signedoffbycc; caso não seja definido, a predefinição retorna para--signed-off-by-cc. - --[no-]cc-cover
-
Caso seja definido, os emails encontrados nos cabeçalhos Cc: no primeiro patch da série (normalmente a carta de apresentação) serão adicionados à lista Cc: de cada conjunto de e-mails. Default is the value of sendemail.cccover configuration value; if that is unspecified, default to --no-cc-cover.
- --[no-]to-cover
-
Caso seja definido, os emails encontrados nos cabeçalhos To: (Para) no primeiro patch da série (normalmente a carta de apresentação) serão adicionados à lista To: de cada conjunto de e-mails. Default is the value of sendemail.tocover configuration value; if that is unspecified, default to --no-to-cover.
- --suppress-cc=<categoria>
-
Define uma categoria adicional dos destinatários para suprimir o auto-cc do:
-
author irá evitar a inclusão o autor do patch.
-
self evitará incluir o remetente.
-
cc irá evitar a inclusão de qualquer pessoa mencionada nas linhas Cc no cabeçalho do patch, exceto self (utilize self para isso).
-
bodycc irá evitar a inclusão de qualquer pessoa mencionada nas linhas Cc no corpo do patch (mensagem do commit), exceto o self (utilize self para isso).
-
O sob evitará incluir qualquer pessoa mencionada nas linhas assinadas, exceto self (utilize self para isso).
-
O misc-by evitará incluir qualquer pessoa mencionada nas linhas Acked-by (Reconhecido-por), Review-by (Revisado-por), Tested-by (Testado-por) e outras linhas "by-by" no corpo do patch, exceto o Signed-off-by (Assinado-por) (utilize sob para tanto).
-
cccmd evitará executar o --cc-cmd.
-
body é o equivalente a sob + bodycc + misc-by.
-
all irá suprimir todos os valores cc de maneira automática.
A predefinição é o valor da configuração
sendemail.suppresscc; caso isso não seja definido, a predefinição seráselfcaso--suppress-fromseja utilizado, bem comobodycaso--no-selected-off-ccseja utilizado. -
- --[no-]suppress-from
-
Caso esteja definido, não adicione o endereço From: à lista cc:. A predefinição é o valor da opção de configuração
sendemail.suppressFrom; caso não seja definido, a predefinição retorna para--no-suppress-from. - --[no-]thread
-
Caso esteja definido, os cabeçalhos In-Reply-To e as Referências serão adicionadas em cada e-mail enviado. Se cada e-mail se refere ao e-mail anterior (
deepencadeado por git format-patch) ou ao primeiro e-mail (encadeamentoshallow) é governado por "--[no-]chain-reply-to".Caso seja desativado com a opção "--no-thread", estes cabeçalhos não serão adicionados (a menos que seja especificado com a opção
--in-reply-to). A predefinição é o valor da opção de configuraçãosendemail.thread; caso não esteja definido, a predefinição retorna para--thread.É responsabilidade do usuário garantir que já não exista um cabeçalho In-Reply-To quando o comando git send-email for solicitado para adicioná-lo (em especial, observe que o comando git format-patch pode ser configurado para realizar o encadeamento ele mesmo). Não fazer isso pode não produzir o resultado desejado no MUA do destinatário.
Administrando
- --confirm=<modo>
-
Apenas confirme antes de enviar:
-
always sempre pedirá confirmação antes do envio
-
O never nunca irá confirmar antes do envio
-
cc irá pedir uma confirmação antes do envio quando o "send-email" tiver adicionado de forma automática os endereços do patch à lista Cc
-
compose (compor) irá confirmar antes de enviar a primeira mensagem ao utilizar o
--compose. -
auto é o equivalente a cc + compose (compor)
A predefinição é o valor da configuração
sendemail.confirm; caso isso não seja definido, utilize a predefiniçãoauto, a menos que alguma das opções da supressão tenha sido utilizada; nesse caso, a predefinição serácompose. -
- --dry-run
-
Faça tudo, exceto realmente enviar os e-mails.
- --[no-]format-patch
-
Quando um argumento pode ser entendido como uma referência ou como um nome do arquivo, entenda-o como um argumento do formato do patch (
--format-patch) ou como um nome de arquivo (--no-format-patch) É predefinido que quando este conflito ocorra, o git send-email seja encerrado. - --quiet
-
Torne o comando git-send-email menos detalhado. Deve ser gerado apenas uma linha por e-mail.
- --[no-]validate
-
Realize verificações de sanidade nos patches. Atualmente, a validação significa o seguinte:
-
Se presente, chame o gancho de validação do sendmail (consulte githooks[5]).
-
Aviso dos patches que contenham linhas mais longas que 998 caracteres, a menos que uma codificação de transferência adequada (auto, base64, ou quoted-printable) seja utilizada; isso se deve as limitações do SMTP descritos em http://www.ietf.org/rfc/rfc5322.txt.
A predefinição é o valor do
sendemail.validate; caso já não estiver definido, a predefinição retorna para--validate. -
- --force
-
Envie os e-mails mesmo que as verificações de segurança as impeçam.
Informação
- --dump-aliases
-
Em vez da operação normal, despeje os nomes dos pseudônimos dos atalhos vindo do arquivo de configuração de pseudônimos, um por linha e em ordem alfabética. Observe que isso inclui apenas o pseudônimo e não os seus endereços de e-mail que foram expandidos. Para obter mais informações sobre pseudônimos, consulte sendemail.aliasesfile.
CONFIGURAÇÃO
- sendemail.aliasesFile
-
Para evitar a digitação dos longos endereços de e-mail, aponte para um ou mais arquivos aliases do e-mail. Você também deve informar o
sendemail.aliasFileType. - sendemail.aliasFileType
-
Formato do(s) arquivo(s) definidos(s) em
sendemail.aliasesFile. Deve ser mutt, mailrc, pine, elm, gnus ou sendmail.A aparência de um arquivo alias em cada formato pode ser encontrada na documentação do programa do e-mail com o mesmo nome. As diferenças e as limitações dos formatos predefinidas são descritas abaixo:
- sendmail
-
-
Os aliases e os endereços citados não são compatíveis: linhas que contenham o símbolo
"são ignorados. -
O redirecionamento para um arquivo (
/nome/do/caminho) ou pipe (|comando) não é suportado. -
A inclusão dos arquivos (
:include: /path/nome) não é suportada. -
Os avisos são impressos na saída de erro predefinido para qualquer construções explicitamente não suportadas e quaisquer outras linhas que não sejam reconhecidas pelo analisador.
-
- sendemail.multiEdit
-
Caso o valor seja
true(predefinido), uma única instância do editor será gerada para editar os arquivos que precisam ser editados (os patches quando--annotateé utilizado e o resumo quando--composeé utilizado). Caso o valor sejafalse, os arquivos serão editados um após o outro, onde um novo editor é aberto a cada vez. - sendemail.confirm
-
Define a predefinição para confirmar antes do envio. Deve ser um de always (sempre), never (nunca), cc (com cópia), compose (compor) ou auto. Consulte
--confirmna seção anterior para obter o significado destes valores.
EXEMPLOS
Utilize o gmail como servidor smtp
Para usar o git send-email para enviar os seus patches através do servidor SMTP do GMail, edite ~/.gitconfig para definir as configurações da sua conta:
[sendemail] smtpEncryption = tls smtpServer = smtp.gmail.com smtpUser = yourname@gmail.com smtpServerPort = 587
Caso tenha uma configuração de autenticação de dois fatores na sua conta do
Gmail, será necessário gerar uma senha específica do aplicativo para ser
possível utilizar com o comando git send-email. Visite
https://security.google.com/settings/security/apppasswords para criá-la.
Quando os seus commits estiverem prontos para serem enviadas para a lista de discussão, execute os seguintes comandos:
$ git format-patch --cover-letter -M origin/master -o outgoing/ $ edit outgoing/0000-* $ git send-email outgoing/*
As suas credenciais serão solicitadas na primeira vez em que você executá-lo. Entre com as credenciais específicas do aplicativo ou a sua senha normal conforme for o caso. Caso tenha o auxiliar de credencial configurado (consulte git-credential[1]), a senha será salva no armazenamento de credenciais para que você não precise digitá-la na próxima vez.
Observação: os seguintes módulos Perl talvez já estejam instalados com a sua distribuição Perl, caso contrário, estes módulos são necessários: MIME::Base64, MIME::QuotedPrint, Net::Domain e Net::SMTP. Estes módulos Perl também são necessários: Authen::SASL and Mail::Address.
VEJA TAMBÉM
git-format-patch[1], git-imap-send[1], mbox(5)
GIT
Parte do conjunto git[1]