Close

Git remote

O SVN usa um único repositório centralizado para servir como hub de comunicação para desenvolvedores e a colaboração ocorre passando os conjuntos de alterações entre as cópias ativas dos desenvolvedores e o repositório central. Isso é diferente do modelo de colaboração distribuída do Git, que dá a cada desenvolvedor sua própria cópia do repositório, completa com seu próprio histórico local e estrutura de ramificação. Geralmente, os usuários precisam compartilhar uma série de confirmações em vez de um único conjunto de alterações. Em vez de confirmar um conjunto de alterações de uma cópia ativa para o repositório central, o Git permite compartilhar ramificações inteiras entre os repositórios.

O comando git remote é uma parte do sistema mais amplo que é responsável pela sincronização de alterações. Os registros com o comando git remote são usados junto com os comandos git fetch, git push e git pull. Todos esses comandos têm suas próprias responsabilidades de sincronização, que podem ser exploradas nos links correspondentes.


Git remote


O comando git remote permite criar, ver e excluir conexões com outros repositórios. As conexões remotas são mais parecidas com marcadores em vez de links diretos para outros repositórios. Em vez de dar acesso em tempo real a outro repositório, eles funcionam como nomes convenientes que podem ser usados para fazer referência a uma URL não tão conveniente.

Por exemplo, o diagrama a seguir mostra duas conexões remotas do seu repositório com o repositório central e o repositório de outro desenvolvedor. Em vez de fazer referência a eles pelas suas URLs completas, você pode passar a origem e os atalhos de John para outros comandos do Git.

Como usar o git remote para conectar a outros repositórios
Janela do console
Material relacionado

Log avançado do Git

Logotipo do Bitbucket
VER SOLUÇÃO

Aprenda a usar o Git com o Bitbucket Cloud

Visão geral de uso remoto do Git


O comando git remote é, em essência, uma interface para gerenciar uma lista de entradas remotas que são armazenadas no arquivo ./.git/config do repositório. Os comandos a seguir são usados para ver o estado atual da lista remota.

Como ver configurações remotas do git


git remote

Listar as conexões remotas que você tem com outros repositórios.

git remote -v

Igual ao comando acima, mas inclui a URL de cada conexão.

Como criar e modificar configurações remotas do git


O comando git remote é também uma conveniência ou método "auxiliar" para modificar o arquivo ./.git/config de um repositório. Os comandos apresentados abaixo permitem gerenciar conexões com outros repositórios. Os comandos a seguir vão modificar o arquivo /.git/config do repositório. O resultado dos comandos a seguir também pode ser alcançado editando direto o arquivo ./.git/config com um editor de texto.

git remote add <name> <url>

Crie uma nova conexão com um repositório remoto. Depois de adicionar um remoto, você vai poder usar <name> como um atalho conveniente para <url> em outros comandos do Git.

git remote rm <name>

Remova a conexão com o repositório remoto chamado <name>.

git remote rename <old-name> <new-name>

Renomeie uma conexão remota de <old-name> para <new-name>.

Discussão remota do Git


O Git foi desenvolvido para dar a cada desenvolvedor um ambiente de desenvolvimento isolado. Isto significa que as informações não são passadas automaticamente para lá e para cá entre os repositórios. Em vez disso, os desenvolvedores precisam puxar manualmente os commits upstream em seus repositórios locais ou colocar manualmente seus commits locais de volta no repositório central. O comando git remote é apenas uma forma mais fácil de passar URLs a esses comandos de "compartilhamento".

A origem Remota


Quando você clona um repositório com git clone, ocorre a criação automática de uma conexão remota chamada origem, que aponta de volta para o repositório clonado. É um recurso útil para os desenvolvedores criarem uma cópia local de um repositório central, pois oferece uma maneira fácil de enviar pull de alterações de upstream ou publicar commits locais. Esse comportamento é também o motivo pelo qual a maioria dos projetos baseados em Git chama de origem o seu repositório central.

URLs do repositório


O Git suporta muitas formas de fazer referência a um repositório remoto. Duas das maneiras mais fáceis de acessar um repositório remoto são por meio dos protocolos HTTP e SSH. HTTP é uma maneira fácil de permitir acesso anônimo, somente leitura a um repositório. Por exemplo:

http://host/path/to/repo.git

Mas geralmente não é possível enviar confirmações para um endereço HTTP (você não quer permitir envios anônimos de forma nenhuma). Para acesso de leitura-gravação, é necessário usar SSH:

ssh://user@host/path/to/repo.git

Você vai precisar de uma conta SSH válida na máquina host, mas diferente disso, o Git suporta o acesso autenticado via SSH pronto para uso. Soluções de hospedagem de terceiros modernas e seguras, como Bitbucket.com, vão fornecer essas URLs para você.

Comandos remotos do Git


O comando git remote é um dos muitos comandos Git que têm "subcomandos" adicionais anexados. Abaixo, há uma verificação dos subcomandos git remote bastante usados.

ADD <NAME> <URL>

Adiciona um registro a ./.git/config para o remoto chamado <name> na URL do repositório <url>.

Aceita uma opção -f, que vai fazer o git fetch assim que o registro remoto for criado.

Aceita uma opção --tags, que vai fazer o git fetch de imediato e importar cada marcador do repositório remoto.

RENAME <OLD> <NEW>

Atualiza ./.git/config para renomear o registro <OLD> para <NEW>. Todas as ramificações de rastreamento remoto e definições de configuração para o remoto são atualizadas.

REMOVE or RM <NAME>

Modifica ./.git/config e remove o remoto chamado <NAME>. Todas as ramificações de rastreamento remoto e definições de configuração para o remoto são removidas.

GET-URL <NAME>

Envia as URLs para um registro remoto.

Aceita --push, as URLs de envio, e não as de busca, são consultadas.

Com --all, todas as URLs para o remoto vão ser listadas.

SHOW <NAME>

Envia informações de alto nível sobre o remoto <NAME>.

PRUNE <NAME>

Exclui todas as ramificações locais para <NAME> que não estão presentes no repositório remoto.

Aceita uma opção --dry-run que vai listar quais ramificações são definidas como reduzidas, mas não vai fazer a redução de fato.

Exemplos remotos do Git


Além da origem, muitas vezes é conveniente ter uma conexão com os repositórios de seus colegas de equipe. Por exemplo, se seu colega de trabalho, John, mantém um repositório com acesso público em dev.example.com/john.git, você pode adicionar uma conexão da seguinte maneira:

git remote add john http://dev.example.com/john.git

Ter esse tipo de acesso a repositórios de desenvolvedores individuais permite colaborar fora do repositório central. Isso pode ser muito útil para equipes pequenas que estão trabalhando em um projeto grande.

Como mostrar seus remotos


Por padrão, o comando git remote vai listar as conexões remotas armazenadas antes para outros repositórios. Assim, vai produzir uma saída de linha única que lista os nomes de "marcador" de repositórios remotos.

$ git remote
origin
upstream
other_users_repo

Chamar git remote com a opção -v vai imprimir a lista de nomes de repositórios marcados e também a URL do repositório correspondente. A opção -v significa "verbose". Abaixo, há uma saída de exemplo da saída git remote detalhada.

git remote -v
origin  git@bitbucket.com:origin_user/reponame.git (fetch)
origin  git@bitbucket.com:origin_user/reponame.git (push)
upstream    https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream    https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (push)

Como adicionar repositórios remotos


O comando git remote add vai criar um novo registro de conexão para um repositório remoto. Depois de adicionar um remoto, você pode usar como um atalho conveniente para em outros comandos Git. Para obter mais informações sobre a sintaxe de URL aceita, veja a seção "URLs de repositório" abaixo. Este comando vai criar um novo registro dentro do ./.git/config do repositório. A seguir, é mostrado um exemplo dessa atualização do arquivo de configuração:

$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"] 
   url = https://bitbucket.com/upstream_user/reponame.git 
   fetch = +refs/heads/*:refs/remotes/remote_test/*

Como inspecionar um remoto


O subcomando show pode ser anexado a git remote para dar uma saída detalhada na configuração de um remoto. Esta saída vai conter uma lista de ramificações associadas ao remoto e também aos terminais anexados para busca e envio.

git remote show upstream
* remote upstream
   Fetch URL: https://bitbucket.com/upstream_user/reponame.git
   Push URL: https://bitbucket.com/upstream_user/reponame.git
   HEAD branch: main
   Remote branches:
      main tracked
      simd-deprecated tracked
      tutorial tracked
   Local ref configured for 'git push':
      main pushes to main (fast-forwardable)

Como buscar e puxar de remotos do Git


Depois que um registro remoto é configurado pelo uso do comando git remote, o nome remoto pode ser passado como um argumento para outros comandos Git para comunicação com o repositório remoto. Tanto git fetch quanto git pull podem ser usados para ler a partir de um repositório remoto. Os dois comandos têm operações diferentes que são explicadas em mais detalhes nos respectivos links.

Como enviar para remotos do Git


O comando git push é usado para gravar em um repositório remoto.

git push <remote-name> <branch-name>

Este exemplo vai carregar o estado local de <branch-name> no repositório remoto especificado por <remote-name>.

Como renomear e remover remotos


git remote rename <old-name> <new-name>

A renomeação do comando git remote é autoexplicativa. Quando executado, este comando vai renomear uma conexão remota de <old-name> para <new-name>. Além disso, isso vai modificar o conteúdo de ./.git/config para renomear o registro para o remoto lá também.

git remote rm <name>

O comando git remote rm vai remover a conexão com o repositório remoto especificado pelo parâmetro <name>. Para demonstrar, a gente vai 'desfazer' a adição remota do último exemplo. Se a gente executar git remote rm remote_test e, em seguida, examinar o conteúdo de ./.git/config, será possível ver que o registro [remote "remote_test"] não está mais lá.


Compartilhar este artigo
Próximo tópico

Leitura recomendada

Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Pessoas colaborando usando uma parede cheia de ferramentas

Blog do Bitbucket

Ilustração do DevOps

Caminho de aprendizagem de DevOps

Demonstrações de funções no Demo Den com parceiros da Atlassian

Como o Bitbucket Cloud funciona com o Atlassian Open DevOps

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up