# Obter alterações de um repositório remoto

É possível usar comandos Git comuns para acessar repositórios remotes.

## Opções para obter alterações

Esses comandos são muito úteis quando você interage com [um repositório remoto](/pt/enterprise-server@3.22/get-started/git-basics/about-remote-repositories).
`clone` e `fetch` baixam o código remoto de uma URL remota de um repositório para o computador local, `merge` é usado para mesclar o trabalho de diferentes pessoas com o seu e `pull` é uma combinação de `fetch` e `merge`.

## Clonar um repositório

Para obter uma cópia completa do repositório de outro usuário, use `git clone` desta forma:

```shell
$ git clone https://HOSTNAME/USERNAME/REPOSITORY.git
# Clones a repository to your computer
```

Você pode escolher entre [várias URLs diferentes](/pt/enterprise-server@3.22/get-started/git-basics/about-remote-repositories) ao clonar um repositório. Ao estar logado no GitHub, essas URLs estarão disponíveis na página principal do repositório quando você clicar em **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-code" aria-label="code" role="img"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg> Code**.

![Captura de tela da página principal de um repositório. Um botão verde "Código" foi realçado em laranja e expandido para mostrar a URL HTTPS do repositório.](/assets/images/help/repository/remotes-url-global-nav-update.png)

Quando você executa `git clone`, as seguintes ações ocorrem:

* Uma pasta `repo` é criada
* Ele é inicializado como um repositório Git
* Um "remote" chamado `origin` é criado, apontando para a URL da qual foi feito o clone.
* Todos os arquivos e commits do repositório são baixados ali
* O branch-padrão foi desmarcado

Para cada branch `foo` no repositório remoto, um branch `refs/remotes/origin/foo` de acompanhamento remoto correspondente é criado no repositório local. Normalmente, você pode abreviar esses nomes de branches de acompanhamento remoto para `origin/foo`.

## Buscar alterações de um repositório remoto

Use `git fetch` para recuperar o novo trabalho feito por outras pessoas. A busca em um repositório captura todos os novos branches e as tags de acompanhamento remoto *sem* mesclar essas alterações em seus branches.

Se você já tiver um repositório local com uma URL remota configurada para o projeto desejado, poderá capturar todas as novas informações usando `git fetch *remotename*` no terminal:

```shell
$ git fetch REMOTE-NAME
# Fetches updates made to a remote repository
```

Caso contrário, você sempre pode adicionar um novo remoto e, em seguida, procurar. Para saber mais, confira [Gerenciar repositórios remote](/pt/enterprise-server@3.22/get-started/git-basics/managing-remote-repositories).

## Fazer merge de alterações em seu branch local

A mesclagem combina suas alterações locais com as alterações feitas por outras pessoas.

Geralmente, você faria um merge de um branch de acompanhamento remoto (por exemplo, um branch com fetch de um repositório remote) com seu branch local:

```shell
$ git merge REMOTE-NAME/BRANCH-NAME
# Merges updates made online with your local work
```

## Fazer pull de alterações de um repositório remote

`git pull` é um atalho conveniente para realizar `git fetch` e `git merge` no mesmo comando:

```shell
$ git pull REMOTE-NAME BRANCH-NAME
# Grabs online updates and merges them with your local work
```

Como `pull` executa uma mesclagem nas alterações recuperadas, você deve garantir o commit do trabalho local antes de executar o comando `pull`. Se você encontrar [um conflito de mesclagem](/pt/enterprise-server@3.22/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line) que não pode resolver ou se decidir sair da mesclagem, use `git merge --abort` para levar o branch de volta para o local em que estava antes do pull.

## Leitura adicional

* ```
            ["Como trabalhar com repositórios remotos" do livro _Pro Git_](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes)
  ```