Git file system

O mundo do Git

Rafael Pazini
EscaleTechBlog
Published in
6 min readJun 28, 2017

--

Quando começamos um novo projeto, seja ele qual for, uma das primeiras coisas que pensamos é: "Preciso salvá-lo, e não perder tudo quando alguma coisa der errado". Então, eis que surge nosso querido herói, o sistema de versionamento.

Com o sistema de versionamento, temos controle total do que foi modificado ou adicionado no projeto, além de ter a flexibilidade para disponibilizar o projeto em alguma plataforma online ou se preferir, deixar tudo em um servidor local de sua responsabilidade. Mas como o próprio nome diz, a melhor função é ter um backup de tudo e com logs de tudo o que foi modificado. Por tanto, se você ainda não usa algo do tipo meu caro, é interessante começar a aprender…

O sistema de versionamento mais famoso

São muitas opções para serem utilizadas como sistema de versionamento. Durante muito tempo — mas muito tempo mesmo — o sistema mais utilizado era o SVN (Subversion), onde existia um servidor local e os usuários faziam cópias de seus arquivos para lá. Porém se outra pessoa estivesse editando o mesmo arquivo que você, existiria um conflito e a ultima pessoa a abrir o arquivo não conseguiria salvar as alterações, funcionalidade igual a zero.

Partindo do princípio de várias pessoas poderem trabalhar no mesmo projeto simultaneamente, o Git ganhou uma força enorme, além de ser fácil de implementar e utilizar, é claro. E hoje acaba sendo um dos principais meios de versionamento de software.

Existem outras alternativas de sistema de versionamento como o Mercurial, que é desenvolvido pelo Facebook. Ambos possuem o mesmo conceito, mas o Git acaba sendo mais utilizado pela comunidade ao redor do mundo.

Git != Github

Muitas vezes ouvimos falar por ai que Git e Github são a mesma coisa, mas NÃO SÃO. É muito importante lembrarmos disso.

O Git é o sistema de versionamento, que pode ou não ser utilizado em conjunto com o Github, que é a plataforma de hospedagem de código — atualmente conta com mais de 35 milhões de repositórios de código hospedados na plataforma, e a maioria deles é open source. O Github utiliza o sistema do git para versionar e controlar os repositórios da plataforma, ou seja, quando você quiser deixar algum código/projeto hospedado no GitHub, você utilizará o git para subir projeto na plataforma.

Assim como o github existem outras plataformas para hospedarmos nosso código. Uma muito utilizada é o bitbucket, ele é bem famoso por permitir que um repositório seja restrito para até 5 usuários de graça. Isso ajuda muito times de startup que estão começando agora e não querem ter gastos por enquanto com esse tipo de ferramenta e também não querem deixar seu código livre para qualquer pessoa ver a formula mágica do negócio.

Mão na massa

Um belo jeito de começar a entender o que é git mexendo com ele é através do treinamento que o próprio github oferece, chamado tryGit.

tryGit um curso rápido e fácil para começar a trabalhar com git

Utilizando uma explicação objetiva e clara, você vai executando o passo a passo para criar o seu primeiro versionamento com git e assim entender como tudo é feito na prática que é a melhor forma de se aprender algo.

É fazendo que se aprende a fazer aquilo que se deve aprender a fazer — Aristóteles

E lógico, um ótimo local para se começar é a nossa boa e velha documentação. O Git possui uma documentação bem completa e com exemplos de uso no seu próprio site, então vale a pena dar uma olhada na mesma sempre que necessário.

Comandos mais usados no dia a dia

Uns comandos básicos e que todo mundo — provavelmente você também — usa diariamente em seus projetos.

O início de tudo. Para iniciar um novo repositório Git você precisa executar o init dentro do diretório.

$ git init

Uma coisa que devemos lembrar quando trabalhamos com git é a criação do .gitignore , este arquivo vai ser responsável por evitar que arquivos de sistema como .DS_Store ou Thumbs sejam adicionados ao nosso repositório.

$ touch .gitignore

Depois é só editar este arquivos e colocar as extensões ou pastas que devem ser ignoradas. Você pode dar uma olhada no gitignore.io para saber quais arquivos devem ser ignorados de acordo com a linguagem de programação e OS que está sendo utilizado

add . é responsável por adicionar todos os novos arquivos em seu repositório para o que sejam versionados.

$ git add .

commit com este você adiciona a mensagem e comita os arquivos, ou seja, você registra as mudanças que você fez adicionando uma mensagem que contenha uma breve descrição do que foi alterado ou adicionado. Nessa hora é legal ser claro e objetivo, pois pode facilitar caso seja necessário voltar para uma determinada versão.

$ git commit -am 'Add new files to project'

push é um dos mais utilizados, pois é quem irá subir todas as mudanças da suma máquina para o servidor.

$ git push origin develop

pull atualiza sua base local com os arquivos que estão no servidor, sempre que alguém sobe alguma mudança para o servidor, você deve rodar este comando para garantir que seu versão local estará atualizada.

$ git pull

checkout é responsável por alterar entre branches, ou seja, você troca de "galhos" durante o desenvolvimento. Os branches nada mais são do que cópias exatas do projeto atual onde faremos alterações sem que seja modificado o projeto que ja está em produção.

Em um projeto sempre teremos no mínimo duas branches, a develop que é a de desenvolvimento e a master que é a de produção. Para cada feature é legal criar uma nova branch, mas isso ficará mais claro quando falarmos sobre o git-flow.

$ git checkout develop

status irá exibir o status atual do seu repositório, que nada mais é do que mostrar quais arquivos foram alterados ou adicionados

$ git status

stash este pode e dever ser usado quando você quer armazenar as mudanças que você fez e retornar para um repositório sem modificações, por exemplo, você terminou um feature nova e no fim viu que estava na branch errada, o stash salva estas mudanças localmente e volta o repositório para o HEAD. E depois as mudanças podem ser inseridas novamente, sem perder nada.

$ git stash

Dica que vale ouro

Hoje em dia como mexemos com muitos projetos e às vezes esquecemos de gerenciar as branches e features de maneira correta. Podemos e devemos utilizar um facilitador para isso, e o nome dele é Git-Flow

git-flow

O git-flow é um método utilizado para decentralizar o desenvolvimento, assim cada feature será feita em uma branch e que quando terminada será margeada para a branch de desenvolvimento.

Quando tudo estiver ok (sem bugs e problemas técnicos), a branch de desenvolvimento será margeada para produção. Em poucas palavras, é coisa de Deus e ajuda a evitar muitas noites acordado resolvendo conflito de novas features :).

Caso queira ir mais a fundo, deixo o link para o livro do git que fala muito bem de toda a história do git e de toda sua estrutura. Era isso o básico que eu tinha para falar, agora o versionamento só depende de você meu caro!

--

--

Rafael Pazini
EscaleTechBlog

Software engineer @plutotv. I'm a developer who loves to learn and implement new technologies. And I'm always looking for new experiences, new knowledge.