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.43.0 11/20/23
- 2.42.0 → 2.42.1 no changes
- 2.41.0 06/01/23
- 2.39.1 → 2.40.1 no changes
- 2.39.0 12/12/22
- 2.38.1 → 2.38.5 no changes
- 2.38.0 10/02/22
- 2.35.1 → 2.37.7 no changes
- 2.35.0 01/24/22
- 2.33.1 → 2.34.8 no changes
- 2.33.0 08/16/21
- 2.30.2 → 2.32.7 no changes
- 2.30.1 02/08/21
- 2.30.0 12/27/20
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_EDITOR
no 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.from
estejam definidos, então o usuário será avisado para informar o valor. O valor predefinido para o prompt será o valor doGIT_AUTHOR_IDENT
ouGIT_COMMITTER_IDENT
caso 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
--thread
e--no-chain-reply-to
sejam 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ção
Somente é necessário caso
--compose
seja definido. Caso--compose
nã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
--compose
seja definido. Caso--compose
nã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.xmailer
comofalse
.
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-email
tenta 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-auth
forem 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-pass
sempre 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-user
ou`sendemail.smtpUser
), porém nenhuma senha seja definida (com--smtp-pass
ousendemail.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.com
ou 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 pelosendmail
em/usr/sbin
,/usr/lib
e$PATH
caso 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-option
deve 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-user
ousendemail.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.identity
definido 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.chainReplyTo
pode 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áself
caso--suppress-from
seja utilizado, bem comobody
caso--no-selected-off-cc
seja 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 (
deep
encadeado 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
--confirm
na 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]