Perguntas frequentes do Git

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Neste artigo, encontre respostas para perguntas frequentes sobre o Git, especificamente adaptadas para o Azure Repos. Se você deseja gerenciar ramificações remotas, identificar sua ramificação atual ou lidar com outras tarefas menos comuns do Git, este guia fornece dicas e soluções úteis. Mergulhe nas seções a seguir para aprimorar seu fluxo de trabalho do Git e resolver problemas comuns.

Como posso baixar facilmente uma ramificação remota para meu repositório local?

Primeiro, certifique se você tem o repositório origin configurado. Você deve ter isso se clonou seu repositório usando git clone. Quando você faz check-out de uma ramificação que não existe localmente, o Git verifica se há uma ramificação remota com o mesmo nome. Se houver, o Git cria um ramo local que faz referência ao ramo remoto. Use git pull para baixar os commits e atualizar o histórico do branch localmente.

Como descobrir em qual branch estou trabalhando?

Execute git branch sem argumentos para mostrar as ramificações locais e destacar a que você fez check-out. No Visual Studio, a barra de status também exibe o branch atual quando você está trabalhando com um projeto armazenado em um repositório Git local.

Quando fazer commits do Git?

É uma prática recomendada fazer commits separados para alterações logicamente distintas. Pense nos commits como entradas em um livro de registro. Sempre que fizer uma alteração digna de nota, registre-a em um commit. Uma abordagem popular é permitir commits locais frequentes, mas esmagá-los por meio de rebase antes de fazer o push. Isso proporciona flexibilidade e, ao mesmo tempo, mantém o histórico de commits simplificado.

Se cada branch mantiver seu histórico completo de commits, isso não dificultará o acompanhamento histórico de commits de *main* ao longo do tempo?

Projetos grandes com muitos commits e colaboradores podem resultar em um main histórico de branch que reflete o desenvolvimento de branches de tópico mais do que o projeto geral. O Git permite condensar commits em branches por meio de commits de squash e rebase. A combinação por squash de commits torna o histórico do branch menos detalhado, simplificando o histórico de commits no branch principal depois de mesclado.

Como descobrir quem fez uma alteração específica em um arquivo?

Use o comando git blame para descobrir quem fez uma alteração específica em um arquivo. No repositório local, é possível executar git blame com o parâmetro -L, especificando as linhas de interesse. Blame produz a saída formatada mostrando o commit que atualizou pela última vez a linha e o nome da pessoa que fez o commit.

> git blame Example_repo -L 20,+40  # show the blame output for the next 40 lines starting at line 20

215d1108 (Example User 2015-11-21 09:54:23 -0800 20) line 20 of the code
215d1108 (Example User 2015-11-21 09:54:23 -0800 21) line 21 of the code
215d1108 (Example User 2015-11-21 09:54:23 -0800 22) line 22 of the code

Blame pesquisa o histórico de commits para você. Você também pode examinar o histórico de um arquivo no portal da Web para determinar quem fez uma alteração e quando. Abra o Code Explorer do seu repositório e o branch e selecione o arquivo em questão. O Azure Repos mostra o histórico de commit completo do arquivo no branch atual.

Fiz alterações em alguns arquivos e agora não consigo fazer o check-out em uma ramificação diferente ou fazer o rebase do meu trabalho.

Fazer check-out em um branch diferente no Git afeta o estado dos arquivos em seu sistema de arquivos. O Git usa o histórico de commits para garantir que você trabalhe com os arquivos que representam o estado do branch. Se você tentar alterar branches enquanto tiver alterações não confirmadas, essas alterações serão substituídas durante o check-out. Como o Git não quer que você perca acidentalmente suas alterações, ele impede que o check-out aconteça. Você tem duas opções:

A solicitação de pull não pode ser mesclada com esta mensagem: não é possível mesclar automaticamente: um dos objetos git internos (blob, árvore, commit ou tag) é muito grande, o que causou a exceção TF401022. Você pode tentar usar o LFS, dividir a mesclagem ou o commit grande em vários pequenos.

Esse problema está relacionado a conflitos de mesclagem em arquivos binários grandes. O limite atual para arquivos é de 100 MB. A solução alternativa é resolver os conflitos de mesclagem localmente, mesclando o destino na origem localmente, resolvendo os conflitos e enviando as alterações.

O Git LFS (Large File Storage) é recomendado para armazenar arquivos binários grandes, não apenas para evitar conflitos, mas também para gerenciar o tamanho geral do repositório, o que afeta os tempos de clone e push.

Fiz alguns trabalhos, mas preciso mudar para outra coisa. Como salvar meu trabalho para mais tarde sem fazer commit das alterações?

Se você quiser salvar suas alterações sem fazer commit, use o Git stash. O Stash salva as alterações atuais preparadas e não preparadas em sua ramificação e reverte sua ramificação para o estado do último commit. Em seguida, você pode alternar para outro branch, fazer seu trabalho e depois executar stash apply para restaurar suas alterações.

git stash
Saved working directory and index state WIP on feature1: be26067 updated endpoint docs
HEAD is now at be26067

Quando você executar [git stash apply], as alterações armazenadas mais recentes são aplicadas ao seu ramo atual. Se houver um conflito, [stash] restaura as alterações dos arquivos que não estão em conflito e cria marcadores de conflito nos arquivos que estão em conflito. É necessário mesclar as alterações manualmente nesse caso.

Quando terminar de usar o estoque, exclua-o com [git stash drop]. Esse comando remove o último conjunto de alterações armazenadas.

Você pode ter vários estoques, mas gerenciá-los exige mais manipulação manual, por ser necessário aplicar e soltar estoques explicitamente. Saiba mais com a documentação do Git Stash.

Como alterar o editor padrão para ferramentas de linha de comando do Git?

Por padrão, o Git de linha de comando usa um editor de linha de comando ao solicitar mensagens de commit, executar trocas de base e outros trabalhos que requerem informações adicionais para serem concluídos. O editor padrão é configurado com git config:

> git config core.editor _path_to_editor_ _options_to_editor_

O Git para Windows facilita a definição do bloco de notas como o editor:

> git config core.editor notepad

Este comando configura o Bloco de Notas do Windows para editar informações do Git conforme necessário e passar corretamente o texto do Git para o Bloco de Notas. Também é possível especificar

> git config format.commitMessageColumns 72 

para manter as colunas de texto nas mensagens de commit no 72 preferencial e fazer a quebra linha depois de atingir o limite de caracteres em uma linha.

Como alterar o nome de usuário e o email exibidos em meus commits?

O Git coloca um nome de usuário e informações de endereço de email dentro de cada commit, e o Azure Repos usa essas informações ao exibir commits e ao trabalhar com pull requests. Se você estiver trabalhando na linha de comando, poderá atualizar as informações de nome e email exibidas com o comando git config:

> git config --global user.email "example-user@example-site.com"
> git config --global user.name "Example User"

A opção --global define o email e o nome incluídos em commits para todos os repositórios Git nesse sistema. Se você quiser alterar as configurações de um único repositório, altere para o diretório em que o Repositório do Git está localizado e execute os comandos acima sem o sinalizador --global.

Também é possível alterar as configurações de nome e email do Visual Studio. No menu Git, selecione Configurações Na caixa de diálogo Opções, selecione Configurações globais do Git ou Configurações do Repositório do Git>Geral.

O Visual Studio 2019 versão 16.8 e versões posteriores fornece uma experiência de controle de versão do Git, mantendo a interface do usuáriodo Team Explorer Git. Para usar o Team Explorer, desmarque Ferramentas>Opções>Versão prévia do recurso>Nova experiência do usuário do Git na barra de menus. Você pode exercer os recursos do Git de qualquer interface de forma intercambiável.

No Team Explorer, escolha Configurações, e abaixo de Git, selecione o link Configurações globais ou Configurações de repositório.