Git Fetch: uma classe mestre
Publicados: 2023-02-26 O comando Git fetch
permite que você olhe antes de pular. Você pode descobrir quais alterações foram feitas em um repositório remoto, mas sem substituir seus arquivos locais pelos arquivos remotos.
O que é git fetch e o que ele faz?
Git buscar vs. puxar
Sincronize seus repositórios locais e remotos com git fetch
Veja todas as tags buscadas
Fazendo uma simulação primeiro
Como obter um único ramo
Obter todas as filiais
Comparando Ramos Locais e Remotos
Sincronizando uma filial local com uma filial remota
O cachorrinho meio treinado
O que é git fetch e o que ele faz?
O comando fetch
no Git baixa commits, arquivos e outras informações de um repositório remoto para seu repositório local, com segurança. Use a busca quando quiser ver quais alterações outros desenvolvedores fizeram, sem ser forçado a aceitar as alterações. Seus arquivos locais permanecem intocados. Por que isso é importante?
Você tem que manter seu juízo sobre você quando está trabalhando como parte de uma equipe de desenvolvimento. O repositório remoto ou central conterá alterações e novas ramificações que outros desenvolvedores criaram e enviaram para o repositório remoto.
É totalmente possível que alguém tenha atualizado a cópia remota dos arquivos que você modificou localmente em seu computador. Se você executar casualmente um git pull
para atualizar seu repositório local, provavelmente terá que lidar com mesclagens para alterações que talvez nem queira.
Depois de baixar as informações, você pode examiná-las e ver quais são as mudanças. Isso permite que você faça uma escolha informada sobre o que deseja mesclar agora, se houver, e o que deseja adiar para mais tarde.
Git buscar vs. puxar
O comando git fetch
se comporta como o comando git pull
, mas sem a etapa que sobrescreve seus arquivos locais. Seu repositório local é atualizado e sincronizado, mas as alterações não são gravadas no estado de trabalho de seu repositório local, portanto, seus arquivos permanecem intocados.
Ou, colocando de outra forma, o comando git pull
é como um git fetch
seguido imediatamente por um git merge
.
Sincronize seus repositórios locais e remotos com git fetch
Para buscar todos os metadados atualizados e confirmações de um repositório remoto para seu repositório local, use o comando git fetch
com o nome ou URL do repositório remoto. Por padrão, o primeiro repositório remoto é chamado de “origem”.
git busca origem
Você pode omitir a palavra “origem” se estiver trabalhando com um único repositório remoto.
git busca
Isso recupera todas as atualizações do repositório de “origem”, mas não mescla as alterações nos arquivos de trabalho. Podemos ver que há um novo branch, chamado “new-branch”, que foi recuperado para nós.
Depois de usar o comando fetch
, você pode ver a lista completa de branches no controle remoto, usando a opção -r
(remote) com o comando branch.
git ramo -r
Isso lista todas as ramificações que o remoto conhece, que após o fetch
, também estão em seu repositório local.
Veja todas as tags buscadas
Da mesma forma, você pode usar a opção tag
(observe, é “tag” sem um “s”) para ver a lista de tags.
git tag
RELACIONADO: Como alternar, adicionar e remover Git Remotes
Fazendo uma simulação primeiro
Embora um git fetch
não mescle as alterações em seus arquivos de trabalho, ele ainda atualiza seu repositório local. Se você quiser ver qual mudança o comando fetch
fará, sem realmente fazê-lo, use a opção --dry-run
.
git fetch --dry-run
Como obter um único ramo
Buscar informações sobre uma única ramificação é fácil. Adicione o nome da ramificação à linha de comando para informar fetch
que você só precisa saber sobre aquela ramificação.
Aqui, estamos dizendo fetch
para recuperar o branch “mary-feature” do repositório remoto “origin”.
git busca origem mary-feature
Agora que os detalhes e o conteúdo do branch remoto estão em seu repositório local, você pode usar o comando git checkout
para criar um novo branch e fazer o checkout do branch remoto. Isso não sobrescreverá nenhum arquivo existente se for a primeira vez que você usa essa ramificação.
git checkout -b mary-feature origem/mary-feature
Obter todas as filiais
Se estiver usando vários controles remotos, você pode economizar tempo puxando todas as alterações de todas as ramificações de volta para seu repositório local usando a opção --all
.
git buscar --all
Comparando Ramos Locais e Remotos
Para ver como os arquivos em uma ramificação remota diferem de suas cópias locais, use git fetch
e, em seguida, use o comando git log
.
Observe que as ramificações local e remota têm dois pontos “ ..
” separando-as. A opção --oneline
mostra o identificador do commit e a mensagem do commit.
git busca
git log --oneline mary-feature..origin/mary-feature
A exibição de uma linha é útil se uma ramificação contém muitas alterações. Para ver um pouco mais de informação, omita a opção --oneline
.
git log mary-feature..origin/mary-feature
Isso nos mostra a hora e a data de cada commit, junto com a mensagem do commit e os detalhes de contato do autor da alteração.
Sincronizando uma filial local com uma filial remota
Se você decidiu que quer ir em frente e mesclar as alterações da ramificação remota para seus arquivos de trabalho locais, você pode usar estes comandos.
Faremos o check-out do branch para ter certeza de que estamos funcionando, é o nosso branch atual e em funcionamento.
git checkout mary-feature
A ramificação é verificada para nós e somos informados de que ela está por trás da versão remota. Podemos usar git pull
para atualizá-lo e git status
para verificar nosso status.
git pull
git status
Se fizermos algumas alterações em nossos arquivos locais, o Git nos informará quando fizermos o checkout da ramificação que precisaremos executar um git pull
para iniciar uma mesclagem.
git checkout mary-feature
Um simples git pull
inicia o processo de recuperação dos arquivos e mesclagem, ou podemos mergulhar direto e usar o próprio git merge
. Começaremos verificando se estamos trabalhando com a ramificação correta
git checkout mary-feature
Diremos ao git
para mesclar nosso branch atual com o branch no repositório remoto, existem seis commits diferentes que precisam ser resolvidos.
Precisamos dizer ao Git qual branch remoto queremos mesclar.
git merge origin/mary-feature
Um editor é aberto para nos permitir fornecer uma mensagem de confirmação. Podemos aceitar a mensagem sugerida ou adicionar a nossa. O editor é seu editor padrão, a menos que o Git tenha sido configurado para usar um editor diferente.
Salve suas alterações quando estiver pronto para prosseguir. A mesclagem continua automaticamente quando o editor é fechado.
Nossa fusão foi bem-sucedida porque não houve conflitos.
Os conflitos surgem quando as mesmas linhas de código são alteradas por dois ou mais desenvolvedores. Se for esse o caso, o Git marca os conflitos no arquivo afetado. Você precisará revisá-los e escolher qual alteração manter.
O cachorrinho meio treinado
Assim como um cachorrinho em treinamento, fetch
recuperará o que você pedir, mas não o deixará cair. Se você realmente deseja o que o cachorro lhe mostrou, precisará pull
.
RELACIONADOS: Git rebase: tudo o que você precisa saber