Aprenda Git

  • Página Inicial
  • Contato!
  • Tudo sobre Git Parte 1!
  • Tudo sobre Git Parte 2!
  • Tudo sobre Git Parte 2

    Iniciando com GitHub

    O GitHub é um serviço de host para repositórios Git. Até o momento, nós criamos nosso repositório Git localmente, ele está apenas no seu computador, para isso nós teremos que colocar ele num repositório remoto, que no caso, usaremos o GitHub. Existem outros semelhantes como o GitLab, o BitBucket, o Phabricator, o Gogs, etc.

    Basicamente, para enviar dados do nosso computador pro GitHub usamos o push, pra buscar os dados do GitHub usamos o fetch, e para puxar dados do GitHub pro nosso repositório no computador usamos o pull.

    Entre no seu perfil do GitHub pelo navegador, vá em Repositories e em New para criar um novo repositório remoto. Escolha as configurações como o nome do repositório, se ele será público ou privado (no caso, escolheremos público). Veja se é necessário adicionar outras coisas como adicionar um README, o .gitignore, a licença, etc. Depois disso clique em Create Repository.

    PS: Caso você queira configurar o SSH para acesso ao GitHub, vá no seu perfil, em Settings e em SSH and GPG Keys. Podemos usar o Git remoto por SSH e por HTTPS.

    Para fazer o upload do seu repositório local pro GitHub, entre na pasta desse repositório e veja com git status o atual estado do repositório. Para fazer o "push" (enviar pro GitHub), digite git push https://github.com/nomedousuario/NomeDoProjeto.git master (ou a branch que quer enviar). Só com isso, todos os nossos arquivos serão enviados pro repositório remoto, incluindo os commits e tudo mais o que fizemos localmente.

    Agora, no nosso repositório, faça uma alteração no HTML, veja o status, adicione e commite o repositório. Até então, as alterações serão locais. Para ele sincronizar com o repositório remoto e digite git push https://github.com/nomedousuario/NomeDoProjeto.git master.

    Para não ficar copiando e colocando o link do repositório toda hora, podemos criar um alias para esse comando, utilizando git remote add origin https://github.com//nomedousuario/Projeto-1.git. Para ver se foi adicionado, digite git remote -v, ele mostrará o repositório para fetch (buscar) e push (enviar). Daí é só usar git push origin master.

    PS: Lembrando que onde está origin pode ser qualquer nome, mas geralmente origin é o mais usado.

    De uma outra forma, criaremos um segundo repositório remoto no GitHub, da mesma forma do primeiro. Nesse caso criaremos o .gitignore e o README (que é usado como uma documentação do projeto).

    Vamos clonar esse repositório para a nossa máquina com git clone https://github.com/nomedousuario/Projeto-1.git. Caso queira outro nome na pasta clonada, podemos colocar git clone https://github.com/nomedousuario/Projeto-1.git NovoNomeDoProjeto.

    Podemos só buscar as informações sem alterar o repositório com git fetch https://github.com/nomedousuario/Projeto-1.git master, depois podemos dar um git status para ver se é necessário fazer o pull do repositório remoto (puxar). Para puxar as alterações do projeto para o nosso repositório local, digite git pull https://github.com/nomedousuario/Projeto-1.git master. É recomendado primeiro usar o fetch, depois o pull.

    PS: Ao clonar um repositório, ele automaticamente colocará o repositório remoto clonado com o alias "origin". Para ter certeza, digite novamente git remote -v. E os comandos push, fetch e pull podem ter a branch omitida, caso você queira fazer as tarefas na branch que você está atualmente, algo como git push https://github.com/nomedousuario/NomeDoProjeto.git ou git push origin (se você tiver na master ele fará o envio pra master, em uma branch criada ele enviará pra esta criada, etc.).

    Simulando Múltiplos Devs

    Como já percebemos, num projeto do Git podemos ter vários desenvolvedores trabalhando, no caso, vamos simular múltiplos devs.

    Vamos abrir três terminais, onde um será você, o outro será Fulano e o outro será Sicrano.

    Vamos clonar o repositório Projeto-1 do GitHub digitando git clone https://github.com/nomedousuario/Projeto-1 Projeto-1-Fulano e depois fazer o mesmo com Sicrano.

    No caso nós vamos salvar com nomes diferentes por exemplificar no mesmo computador, no entanto, num projeto real, cada um trabalharia num computador diferente e por isso, as pastas poderiam ter o nome original mesmo.

    Vamos supor que Fulano começa a alterar o código, como adicionar um estilo CSS. Depois ele verá o status e adicionará, e o commit no caso ele fará com o seu e-mail, assim: git commit -m "Alterando CSS" --author="Fulano <fulano@gmail.com>". Daí para enviar pro GitHub basta digitar git push origin master (lembrando que ao clonar ele automaticamente coloca o repositório no alias origin).

    Agora vamos pra Sicrano, supondo que ele iria começar a trabalhar no mesmo projeto. Para ele ver se o projeto teve alterações, digite git fetch origin master e git pull origin master, e ele vai puxar as últimas atualizações feitas no repositório remoto. Daí ele aproveita e faz outras alterações, pode ser no CSS mesmo, e daí ele vê o status, adicionará e commitará com git commit -m "Nova Alteração no CSS" --author="Sicrano <sicrano@gmail.com>". Daí ele também fará o push com git push origin master.

    PS: Isso estamos simulando numa mesma branch, mas é recomendado que cada desenvolvedor tenha sua própria branch para trabalhar.

    Aí você, como coordenador do projeto, você dará o git fetch origin master e o git pull origin master para ver as alterações que os outros devs fizeram.

    Num projeto real, vários desenvolvedores podem estar no mesmo projeto, e aí é toda hora fetch, push e pull, além de ser necessário resolver conflitos, como exemplificado anteriormente.

    Fazendo Pull Request

    Como já exemplificamos, não é recomendado fazer tudo no branch principal, e por isso é recomendado criar branches para cada coisa que será manipulada no repositório, e depois fundir elas com a branch principal.

    Vamos continuar com dois devs simulados, você e o Sicrano. Vamos supor que o Sicrano vai criar uma nova branch, nós podemos usar o checkout com a opção -b para ele, além de criar, automaticamente ele muda pra mesma branch recém-criada, ficando assim: git checkout -b svg.

    Nessa nova branch, vamos colocar algumas imagens. Adicione, commite com o nome do usuário git commit -m "Adicionando Imagens" --author="Sicrano <sicrano@gmail.com>", e depois dê o push, que não será no master, mas nessa branch criada, com git push origin svg.

    Aí, no site do GitHub, ele identificará o Pull Request do SVG, aí você e sua equipe vai ver no repositório remoto e na notificação, clique em Compare & Pull Request, aí você poderá colocar uma mensagem e clicará em Create Pull Request, daí ele verificará se há conflitos e, caso não haja, aparecerá a opção Merge Pull Request para fundir a branch do outro usuário com a principal. Você pode ir em Commits e ver as alterações no Commit desse outro usuário, além de mandar mensagem pra ele, caso algo esteja errado ou incompleto.

    Sicrano poderá continuar adicionando e commitando nessa branch que ele criou. Vamos fazer mais uma alteração em algo, adicionar e commitar como Sicrano, e fazer o push.

    Para fundir, basta clicar em Merge Pull Request, e é recomendado fechar essa branch svg criada.

    Daí, no seu computador, basta dar um fetch e um pull no repositório master pra sua máquina.

    Fazendo Fork de um Repositório

    Para contribuir com projetos de software livre, podemos fazer um fork de um repositório de outro usuário, que nada mais que é do que copiar um repositório pro seu perfil no GitHub.

    Para isso, vá no repositório desejado e clique em Fork. Lá você poderá alterar o nome, decidir se só copia a branch principal ou copia todas, etc. Depois clique em Create Fork.

    Daí, podemos clonar nosso repositório forkado com git clone https://github.com/nossousuario/NomeDoProjeto.git, fazemos as alterações, daí nós adicionamos, commitamos e damos o push pro seu repositório. Para mandar nossas modificações pro usuário criador original do repositório, clique em Contribute e depois em Pull Request, e siga as mesmas instruções ensinadas anteriormente.

    Só que dessa forma, não poderemos alterar diretamente o código, mas o dono do repositório original pode aprovar ou recusar suas mudanças, e caso aprove, aí sim ele será fundido pelo próprio dono, e você ficará como contribuidor.

    Issues

    Nós podemos também relatar bugs, sugerir melhorias e outros tipos de comentários em um repositório do GitHub.

    Para isso, vá no repositório desejado, em Issues e clique em New Issue, escreva o título e a descrição, e clique em Create.