Git Remoto

Git nos servidores

Já entendemos o Básico de Git agora é hora de entender como compartilhar nosso código, como mantê-lo em um servidor e/ou serviço como o Github, BitBucket, entre outros.

Observação: Esse tutorial só pode ser feito se você já leu o tutorial de Chave Ssh e já adicionou sua chave aqui e o no Github!

Clone

Primeiro que vamos ver é como clonar, obter uma cópia de um projeto hospedo em um servidor Git, isso pode ser feito com o comando git clone conforme a seguir:

$ git clone git@git.codesaga.com.br:SEU_LOGIN/exemplo_git.git
Cloning into 'exemplo_git'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.

Esse comando faz muita coisa, vamos entender passo a passo:

Primeiro ele nos dá um mkdir exemplo_git, sendo assim vamos testar isso:

$ cd exemplo_git

Boa, temos um diretorio exemplo_git, muito bom!

Além disse, ele já traz um repositorio git initializado e com o conteúdo salvo no servidor, vamos ver:

$ ls -a
. .. .git/ README.md

Temos o diretório .git e o arquivo README.md e agora vamos ver o histórico de commits desse repositório com:

$ git log
commit a1e153f4d7096a048644935995c6ec6fb08ede88
Author: Alan Rafael R. Batista <alanrrb@gmail.com>
Date:   Tue Apr 21 15:03:45 2015 -0300

    Initial Commit

Com o git clone o Git cria um diretório com o nome do projeto, traz todo o conteúdo do projeto e ainda todo o histórico, excelente!

Uma opção, entre muitas, do git clone, é a de especificar o nome da pasta que o Git deve criar, veja:

$ cd ~/workspace # vc sabe oq isso faz, neh!
$ git clone git@git.codesaga.com.br:SEU_LOGIN/exemplo_git teste_projeto_git
Cloning into 'teste_projeto_git'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.

$ cd teste_projeto_git

Ou um exemplo que um amigo me perguntou uma certa vez:

$ cd ~/workspace
$ mkdir teste_denovo_git
$ cd teste_denovo_git
$ git clone git@git.codesaga.com.br:SEU_LOGIN/exemplo_git .
Cloning into '.'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.

Esse ultimo clona o projeto na pasta atual ., você lembra que . corresponde a localização atual, não é?

Remote

Agora vamos ver algumas informações sobre o nosso repositório remoto, com o comando git remote:

$ git remote -v
origin  git@git.codesaga.com.br:SEU_LOGIN/exemplo_git (fetch)
origin  git@git.codesaga.com.br:SEU_LOGIN/exemplo_git (push)

Ele nos mostra que temos um repositório remote e que o nome dele é origin e que podemos fazer push e fetch nele.

Falando em fetch e push, vamos ver o que é isso:

Fetch

Esse comando pega todos os dados de um determinado repositório remoto, com o comando:

$ git fetch origin

Onde origin deve ser o nome do remoto que você quer pegar, podendo ser outro diferente de origin caso você tenha mais de um ou tenha mudado o nome do origin.

Vamos ver isso funcionando:

$ cd ~/workspace/exemplo_git
$ touch novo_arquivo.txt
$ subl README.md # faça algumas alterações e salve
$ git add novo_arquivo.txt README.md
$ git commit -m "Algumas alterações simples"
[master c27e355] Algumas alterações simples
2 files changed, 1 insertion(+)
 create mode 100644 novo_arquivo.txt

$ git push origin master # já vamos ver esse comando
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 359 bytes | 0 bytes/s, done.
Total 4 (delta 1), reused 0 (delta 0)
To git@git.codesaga.com.br:exemplo_git
   a1e153f..c27e355  master -> master

Agora vamos ver como seria outra pessoa ou mesmo você em outra máquina pegando as alterações feitas no repositório:

$ cd teste_denovo_git
$ git fetch origin
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From git.codesaga.com.br:exemplo_git
   a1e153f..c27e355  master     -> origin/master

Veja que o Git obteve as alterações, mas vamos ver se elas já estão disponiveis:

$ git log
commit a1e153f4d7096a048644935995c6ec6fb08ede88
Author: Alan Rafael R. Batista <alanrrb@gmail.com>
Date:   Tue Apr 21 15:03:45 2015 -0300

    Initial Commit

Hum, parece que não, né? O Git por padrão traz as novas alterações para o repositório, mas não modifica nada ainda, para isso você precisa incluir essas alterações com o comando git merge ou dar um comando git pull que faz um fetch e merge para você, vamos fazer isso então:

$ git pull origin master 

Onde origin é o nome do repositório e master é o nome da branch. Ou faça somente:

$ git pull
From git.codesaga.com.br:exemplo_git
 * branch            master     -> FETCH_HEAD
Updating a1e153f..c27e355
Fast-forward
 README.md        | 1 +
 novo_arquivo.txt | 0
 2 files changed, 1 insertion(+)
 create mode 100644 novo_arquivo.txt

O comando git pull sem paramêtros usa o repositório e branch listados em, mas é bom saber que pode colocar o repositório e branch que precisar ;).

Agora temos todas as alterações no nosso repositório, veja:

$ ls -l
total 4
-rw-rw-r-- 1 alanrrb alanrrb   0 Abr 21 16:35 novo_arquivo.txt
-rw-rw-r-- 1 alanrrb alanrrb 108 Abr 21 16:35 README.md
$ git log
commit c27e355574d97309ac938f731e069a840e32ac15
Author: Alan Rafael R. Batista <alanrrb@gmail.com>
Date:   Tue Apr 21 16:29:22 2015 -0300

    Algumas alterações simples

commit a1e153f4d7096a048644935995c6ec6fb08ede88
Author: Alan Rafael R. Batista <alanrrb@gmail.com>
Date:   Tue Apr 21 15:03:45 2015 -0300

    Initial Commit

Agora sim! Todas as alterações estão disponiveis!

Push

Já vimos o push em ação quando estavámos falando do fetch, mas vamos dissecar-lo um pouco mais:

Após fazer alterações no seu repositório e comitá-las, podemos enviar para o servidor com o comando git push, veja: ```git $ touch maisumarquivo.txt $ git add maisumarquivo.txt $ git commit -m "mais um arquivo adicionado" [master 4e86ea6] mais um arquivo adicionado 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 maisumarquivo.txt

$ git status On branch master Your branch is ahead of 'origin/master' by 1 commit. nothing to commit, working directory clean ```

Adicionamos mais um arquivo e comitamos e pegamos o status, o Git nos disse que estamos a um commit na frente do repositório, sendo assim, vamos sincronizar:

$ git push origin master
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 302 bytes | 0 bytes/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To git@git.codesaga.com.br:exemplo_git
   c27e355..4e86ea6  master -> master

Feito, o Git enviou nossas alterações para o servidor remoto, os paramêtros origin e master são os mesmos usados no git pull, origin para o nome do remoto e master para o nome da branch (vamos falar mais e branch em breve).

Você já é mais que capaz de fazer o Challenge Git Básico, então, divirta-se!

Até mais!

Faça login para comentar.

Entrar

25 Comentários

Wederson Silva

Wederson Silva há 4 meses

Tentei seguir esse tutorial sem clicar em INICIAR O DESAFIO e dava ERRO! Ou seja, você só vai conseguir clonar o repositório quando voltar lá nos desafios e iniciar o(s) desafio(s) do git. Perdi umas 2 horas, mas fazer o que? kkkk Obrigado pela dica AlanPereiraCodes


augustofbento

augustofbento há 10 meses

Bom dia!

Deu esse erro:

Cloning into 'exemplo_git'... The authenticity of host 'git.codesaga.com.br (107.170.136.11)' can't be established. ECDSA key fingerprint is SHA256:oZLt0VtbS3o1lUzStHCoxt+tXMYj4JUY5wz4eynJZ+s. Are you sure you want to continue connecting (yes/no)? Host key verification failed. fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.


AntonioCSV

AntonioCSV há 4 meses

Olá, pra mim também aconteceu isso. Porém quando chegou nessa parte: "Are you sure you want to continue connecting (yes/no)?" eu apenas digitei "yes", aceitando continuar e aí fluiu normal.


Caio Alexandre

Caio Alexandre há aproximadamente 1 ano

Ola a todos esta dando esse erro abaixo, alguem poderia me ajudar a solucionar ? $ git push origin master fatal: 'origin' does not appear to be a git repository fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

Consegui usar o git clone sem problema, mas mesmo assim está dando a mensagem acima


Luis Reis

Luis Reis há mais de 1 ano

Quando dou o comando: "git fetch origin" não aparece nada no terminal, isto é normal? Estou realizando a atividade pelo Win10 utilizando o Git Bash.


Alan Rafael R. Batista

Alan Rafael R. Batista há mais de 1 ano

Como não há nada para pegar (fetch) nada é retornado no terminal mesmo.


alexandre-bechelli

alexandre-bechelli há mais de 1 ano

Ola a todos esta dando esse erro abaixo, alguem poderia me ajudar a solucionar ? $ git push origin master fatal: 'origin' does not appear to be a git repository fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.


AlanPereiraCodes

AlanPereiraCodes há mais de 1 ano

Conseguiu usar o git clone sem problemas? Se sim, verifique se chegou a alterar a pasta com "cd exemplo_git" por exemplo.


Davi Carvalho

Davi Carvalho há mais de 1 ano

Queria saber se é para aparecer algo no meu github. estou preocupado com isso.


AlanPereiraCodes

AlanPereiraCodes há mais de 1 ano

Não aparece nada em seu github. Fique tranquilo! Os repositórios são feitos no servidor do Code saga.


AlanPereiraCodes

AlanPereiraCodes há mais de 1 ano

Tive problemas com este tutorial, logo no primeiro código, o git clone.

Comando: git clone git@git.codesaga.com.br:foo/exemplo_git.git

Cloning into 'exemplogit'... FATAL: R any foo/exemplogit foo DENIED by fallthru (or you mis-spelled the reponame) fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.


Obs: "Em "foo" usei o meu login aqui no Code Saga.


AlanPereiraCodes

AlanPereiraCodes há mais de 1 ano

Consegui resolver. Aparentemente eu não havia iniciado o Desafio para ter direitos de acesso ao host git@git.codesaga.com.br ou algo do tipo.


Ale Galliard

Ale Galliard há mais de 1 ano

Feito!


Gláucia Isidoro

Gláucia Isidoro há mais de 2 anos

nessa linha de comando $ subl README.md # faça algumas alterações e salve meu terminal responde com -bash: subl: command not found

Meu editor de texto é o sublime mesmo. Por que não está funcionando? Também tenho o Xcode.


Mauricio Juba

Mauricio Juba há mais de 2 anos

Aqui resolvi assim; instalei o sublime 3 Adicionei uma variável de sistema SUBLIME caminho C:/program files/sublime text 3/ Adicionei %SUBLIME% no path reiniciei o bash e rolou.. o/


Wesley Naganuma

Wesley Naganuma há aproximadamente 2 anos

se não rolar usa um vim README.md , Insert (no teclado), faz as alterações e salva para salvar Esc wq E resolved =] w para salvar Q para fechar se precisar forçar a alteração usa ! (esclamação)


AlanPereiraCodes

AlanPereiraCodes há mais de 1 ano

Sim, instalando o Sublime Text 3 resolve: http://www.diolinux.com.br/2013/07/omo-instalar-o-sublime-text-3-no-via-ppa.html

Na verdade o comando "subl" é para chamar o Sublime


Luis Reis

Luis Reis há mais de 1 ano

Ou podem simplesmente utilizar o notepad do windows. Ao invés de "subl" usa-se "notepad" || "notepad.exe"


ViviReis

ViviReis há mais de 2 anos

Git Remoto OK


Eliane Nascimento

Eliane Nascimento há aproximadamente 3 anos

Próximo...


Richel Sensineli

Richel Sensineli há aproximadamente 3 anos

Após atualizar minha SSH consegui. :)


Richel Sensineli

Richel Sensineli há aproximadamente 3 anos

Não estou conseguindo fazer o clone, ele me pede a senha.

Comando utilizado: git clone git@git.codesaga.com.br:RichelSensineli/exemplo_git.git

Alguém pode ajudar?


Gileade

Gileade há aproximadamente 3 anos

Desculpa a ignorância, pois não havia começado o desafio antes...


Gileade

Gileade há aproximadamente 3 anos

Olá... estou tendo problemas com o comando push... no comando clone eu já não estou conseguindo colocar o SEU_LOGIN como o meu login, então procurei na internet e vi que da pra fazer o procedimento sem... então venho fazendo sem... porém quando chegou na hora do push está dando o erro abaixo... alguém consegue me ajudar? abraços!

git push origin master FATAL: W any exemplo_git Gileade DENIED by fallthru (or you mis-spelled the reponame) fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.


raulcgomes

raulcgomes há aproximadamente 3 anos

Não tem o .git no final do clone! No desafio funcionou 100%


raulcgomes

raulcgomes há aproximadamente 3 anos

Estou tentando usar o comando clone, mas estou tendo a seguinte resposta: FATAL: R any meuUsuarioCodeSaga/exemplo_git meuUsuarioCodeSaga DENIED by fallthru (or you mis-spelled the reponame) fatal: The remote end hung up unexpectedly

Alguma idéia do que ocorre?


Flávio Visetti

Flávio Visetti há aproximadamente 3 anos

Muito bom!!


Gustavo Sampaio

Gustavo Sampaio há aproximadamente 3 anos

Ao gerar o comando git clone aparece esse erro: Cloning into 'exemplogit'... sshexchange_identification: read: Connection reset by peer fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

Sendo que minha chave ssh está correta


Jorge Gilberto

Jorge Gilberto há aproximadamente 3 anos

feito...