image

Accede a bootcamps ilimitados y a más de 650 cursos

50
%OFF
Article image
Marcus Oliveira
Marcus Oliveira10/03/2024 23:13
Compartir

"Git commit": Principais funcionalidades e suas variações

  • #Git

Ao utilizar o comando git commit, iniciamos as variações do HEAD e geramos novos herdeiros diretos, resultando em uma atualização na árvore de nosso projeto. O comando commit tem uma estrutura específica que nos permite organizar nossas atualizações de forma eficaz.

Vamos explorar suas funcionalidades:

Após utilizar o git add para adicionar as mudanças ao índice antes de usar o comando commit.

Ao utilizar a opção -a com o comando commit, automaticamente adicionamos as alterações de todos os arquivos modificados e removemos os arquivos deletados da árvore de trabalho, efetuando o commit de fato.

Outra opção útil é utilizar as opções --interactive ou --patch com o comando commit, permitindo decidir individualmente quais arquivos ou partes de arquivos devem fazer parte do commit, além do conteúdo já no índice, antes de finalizar a operação.

A opção --dry-run pode ser empregada para obter um resumo do que será incluído em qualquer uma das opções mencionadas acima para o próximo commit, fornecendo o mesmo conjunto de parâmetros (opções e caminhos).

Se um erro for encontrado logo após realizar um commit, é possível recuperá-lo utilizando o comando git reset.

As opções descritas abaixo são de autoria do git conforme o link.

Opções: https://git-scm.com/docs/git-commit/pt_BR

-a

--all

Diz ao comando para preparar automaticamente os arquivos que foram modificados e excluídos, porém os novos arquivos que você não informou ao Git não são afetados.

-p

--patch

Utilize a interface interativa do patch para selecionar quais as alterações serão aplicadas ao commit. Para mais detalhes, consulte git-add[1].

-C <commit>

--reuse-message=<commit>

Pega um objeto commit existente e o reutiliza na mensagem do registro log, assim como as informações da autoria (incluindo o registro de data e hora) durante a criação de um commit.

-c <commit>

--reedit-message=<commit>

Como -C, porém com -c o editor é chamado para que o usuário possa editar ainda mais a mensagem do commit.

--fixup=<commit>

Constrói a mensagem de um commit para utilizar com rebase --autosquash. A mensagem do commit será o assunt da linha a partir de um determinado commit com um prefixo "fixup! ". Para mais detalhes, consulte git-rebase[1].

--squash=<commit>

Constrói a mensagem de um commit para utilizar com rebase --autosquash. A linha do assunto da mensagem do commit é retirada de um determinado commit com um prefixo "squash! ". Pode ser usado com as opções adicionais das mensagens dos commits (-m/-c/-C/-F). Para mais detalhes, consulte git-rebase[1].

--reset-author

Quando utilizado com as opções -C/-c/--amend, ou ao fazer o commit após uma escolha seletiva conflitante, declare que a autoria do commit resultante agora pertence a quem fez o commit. Isso também renova o registro de data e hora do autor.

--short

Ao executar um ensaio, informe a saída no formato curto. Para mais detalhes, consulte git-status[1]. Implica no uso da opção --dry-run.

--branch

Exibe o ramo e a informação de rastreio quando estiver em formato curto.

--porcelain

Ao executar um ensaio, informe a saída no formato porcelana. Para mais detalhes, consulte git-status[1]. Implica no uso da opção --dry-run.

--long

Ao executar um ensaio, informe a saída no formato curto. Implica no uso da opção --dry-run.

-z

--null

Ao exibir a condição de saída short ou porcelain, imprima o nome do arquivo literalmente e termine as entradas com um NUL, em vez do LF. Caso nenhum formato de saída seja informado, implica no uso da opção --porcelain. Sem a opção -z, os nomes dos arquivos com caracteres "incomuns" serão citados conforme explicado nas variáveis de configuração core.quotePath (consulte git-config[1]).

-F <arquivo>

--file=<arquivo>

Pega a mensagem de commit vindo de um determinado arquivo. Utilize - para ler a mensagem da entrada padrão.

--author=<autor>

Sobrescreva o commit do autor. Defina o autor de forma explicita usando o formato padrão Chiquinha <chiquinha@examplo.com>. Caso contrário, assume-se que a predefinição seja <autor> que é usado para localizar um commit já existente feito através deste autor (ou seja, rev-list --all -i --author=<autor>); o autor do commit é copiado a partir do primeiro commit que for encontrado.

--date=<data>

Substitua a data do autor que foi utilizada no commit.

-m <msg>

--message=<msg>

Usa a <msg> como a mensagem de commit. Caso múltiplas opções -m sejam usadas, o seu conteúdo será disposto em parágrafos separados.

A opção -m é utilizado em conjunto exclusivamente com -c, -C e -F.

-t <arquivo>

--template=<arquivo>

Ao editar a mensagem do commit, inicie o editor com o conteúdo do arquivo informado. A variável de configuração commit.template é frequentemente utilizada para fornecer esta opção de forma implícita ao comando. Esse mecanismo pode ser utilizado por projetos que desejam orientar os participantes com algumas dicas sobre o que escrever na mensagem e em qual ordem. Aborte o commit caso o usuário saia do editor sem editar a mensagem. Não qualquer efeito quando uma mensagem é dada por outros meios, por exemplo, com as opções -m ou -F.

-s

--signoff

Adicionar uma linha assinado pela pessoa que fez o commit no final do registro log do commit assinado. O significado de uma aprovação depende do projeto, porém normalmente certifica que a pessoa que fez o commit tem o direito de enviar este trabalho sob a mesma licença e concorda com um Certificado de Origem do Desenvolvedor (consulte http://developercertificate.org/ para obter mais informações).

-n

--no-verify

Esta opção ignora os ganchos dos commits anteriores e os ganchos das mensagens de commit. Consulte também githooks[5].

--allow-empty

Geralmente, ao gravar um commit que tenha exatamente a mesma árvore como se fosse a sua origem, é um erro, o comando impede que você faça um commit desta natureza. Esta opção ignora a segurança e deve ser utilizada principalmente por scripts SCM externos.

--allow-empty-message

Como a opção --allow-empty, este comando é principalmente para uso por scripts de interface SCM externos. Permite criar um commit com uma mensagem vazia sem usar os comandos de "encanamento" como git-commit-tree[1].

--cleanup=<modo>

Esta opção determina como a mensagem que foi informada ao commit deve ser limpa antes do commit ser feito. O <modo> pode ser strip, whitespace, verbatim, scissors ou default.

strip (tirar/remover)

Retira as linhas vazias no inicio e no final, e os rastros dos espaços finais, os comentários e reduza as linhas vazias consecutivamente.

whitespace (espaço)

O mesmo que strip, exceto que o #comentário não é removido.

verbatim (íntegra)

Não altera a mensagem de forma alguma.

scissors (tesouras)

O mesmo que whitespace (espaço), exceto que tudo incluindo a linha encontrada abaixo seja truncada caso a mensagem precise ser editada. "#" pode ser personalizada com core.commentChar.

default

O mesmo que strip caso a mensagem esteja para ser editada. Caso contrário, whitespace (espaço).

A predefinição pode ser alterada através da variável de configuração commit.cleanup (consulte git-config[1]).

-e

--edit

A mensagem obtida do arquivo com a opção -F, da linha de comando com a opção -m e do objeto commit com C é normalmente utilizada como a mensagem de registro log do commit não modificado. Esta opção permite editar ainda mais a mensagem retirada destas fontes.

--no-edit

Utilize a mensagem do commit selecionado sem rodar um editor. Por exemplo, git commit --amend --no-edit altera um commit sem alterar o conteúdo da mensagem do mesmo.

--amend

Substitua o cume do ramo atual criando um novo commit. A árvore gravada é preparada como de costume (incluindo a aplicação das opções -i e -o; e pathspec explicitamente), a mensagem do commit original é utilizada como um ponto de partida, em vez de uma mensagem vazia. Quando nenhuma outra mensagem é utilizada na linha de comando através de opções como -m, -F, -c, etc. O novo commit possuirá as mesmas origens e seu respectivo autor como o atual (a opção --reset-author pode ser utilizada para mudar isso).

É grosseiramente um equivalente para:

$ git reset --soft HEAD^

$ ... faça qualquer outra coisa para encontrar a árvore certa ...

$ git commit -c ORIG_HEAD

mas pode ser utilizado para corrigir a mesclagem de um commit.

Você deve entender as implicações de sobrescrever o histórico caso corrija um commit que já tenha sido publicado. (Consulte a seção "RECUPERANDO DO UPSTREAM REBASE" no git-rebase[1].)

--no-post-rewrite

Ignore o gancho de reescrita de postagem.

-i

--include

Antes de fazer um commit dos conteúdos preparados até o momento, prepare também o conteúdo dos caminhos utilizados na linha de comando. Isso geralmente não é o que você quer, a menos que esteja concluindo um mesclagem conflitante.

-o

--only

Faça um commit utilizando o conteúdo atualizado da árvore de trabalho dos caminhos definidos na linha de comando, desconsiderando qualquer outro conteúdo que tenha sido preparado para os outros caminhos. Essa é a maneira predefinida de operação do comando git commit caso algum outro caminho tenha sido informado na linha de comando; nesse caso, essa opção poderá ser omitida. Caso esta opção seja utilizada junto com --amend, nenhum outro caminho precisará ser informado, o que pode ser utilizado para alterar o último commit sem confirmar as alterações que já foram preparadas. Se utilizado junto com a opção`--allow empty` também não são necessários e um commit vazio será criado.

--pathspec-from-file=<arquivo>

O "pathspec" é passado com <arquivo> em vez dos argumentos da linha de comando. Caso o <arquivo> seja exatamente -, a entrada padrão será utilizada. Os elementos do "pathspec" são separados por caracteres de término de linha LF ou CR/LF. Os elementos do "pathspec" podem ser citados conforme explicado na variável de configuração core.quotePath (consulte git-config[1]). Consulte também opção --pathspec-file-nul e o global --literal-pathspecs.

--pathspec-file-nul

Só faz algum sentido caso seja utilizado junto com a opção --pathspec-from-file. Os elementos "pathspec" são separados com caracteres NUL e todos os outros caracteres são considerados de forma literal (incluindo as novas linhas e as citações).

-u[<modo>]

--untracked-files[=<modo>]

Exibe arquivos sem rastreamento.

O parâmetro <modo> é opcional, a predefinição retorna para all (todos), sendo utilizado para determinar a manipulação dos arquivos que não foram rastreados; quando a opção -u não é utilizada a predefinição retorna para normal, ou seja, exibe os arquivos e diretórios que não foram rastreados.

As opções disponíveis são:

no - Não exibe qualquer arquivo que não tenham sido rastreados

normal - Exibe todos os arquivo e diretórios que não foram rastreados

all - Exibe todos os arquivos individualmente nos diretórios não rastreados.

A predefinição pode ser alterada utilizando a variável de configuração status.showUntrackedFiles documentada em git-config[1].

-v

--verbose

Exibe as diferenças unificadas entre o commit no HEAD e o que seria feito o commit na parte inferior do modelo da mensagem do commit para ajudar o usuário a descrever o commit lembrando quais as alterações que o commit possui. Note que esta saída "diff" não tem suas linhas prefixadas com #. Este "diff" não fará parte da mensagem do commit. Consulte a configuração da variável commit.verbose em git-config[1].

Caso seja utilizado duas vezes exibirá além do diferencial unificado entre o que seriam feitos os commits e os arquivos da árvore de trabalho, ou seja, as alterações não-estáticas nos arquivos rastreados.

-q

--quiet

Suprimir a mensagem de resumo do commit.

--dry-run

Não crie um commit porém exiba uma lista dos caminhos onde os commits devem ser feitos, os caminhos com as alterações locais onde os commits serão deixados de lado e os caminhos que não serão rastreados.

--status

Inclua a saída do git-status[1] na mensagem do commit ao usar um editor para preparar a mensagem do commit. A predefinição retorna para ligado, porém pode ser utilizado para substituir a variável de configuração commit.status.

--no-status

Não inclua a saída do git-status[1] no modelo da mensagem do commit ao utilizar um editor para preparar a mensagem predefinida do commit.

-S[<keyid>]

--gpg-sign[=<keyid>]

--no-gpg-sign

Commits assinados com o GPG O argumento keyid é opcional e a predefinição retorna para a identidade de quem fez o commit; caso seja utilizado, deve estar anexado a opção e sem espaço. A opção --no-gpg-sign é útil para revogar a variável de configuração commit.gpgSign e a anterior --gpg-sign.

--

Não interprete mais argumentos como opções.

<pathspec>…​

Quando o pathspec é utilizado na linha de comando, faça o commit do conteúdo dos arquivos que correspondem ao pathspec sem registrar as alterações já adicionadas ao índice. O conteúdo desses arquivos também é preparado para o próximo commit, além do que já foi preparado anteriormente.

Para mais detalhes sobre a sintaxe <pathspec>, veja a entrada pathspec em gitglossary[7].  

Conclusão

Em resumo, o comando git commit é essencial para o fluxo de trabalho do Git, permitindo que os desenvolvedores registrem suas alterações de forma organizada e eficiente. Ao explorar as funcionalidades e variações deste comando, podemos maximizar sua utilidade em nosso processo de desenvolvimento.

Em última análise, compreender e aproveitar ao máximo as funcionalidades do git commit pode aumentar a eficiência e a qualidade de nosso trabalho colaborativo em equipe, garantindo que nossos projetos sejam mantidos de forma organizada e confiável.

Por meio da aplicação dessas práticas recomendadas, podemos fortalecer nossa capacidade de gerenciar o versionamento de código de forma eficaz e colaborativa, contribuindo para o sucesso de nossos projetos de software.

Compartir
Recomendado para ti
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comentarios (0)