TUTORIAL GIT Victor Breder Comp-19 Março de 2017 1. INTRODUÇÃO Este tutorial tem como objetivo apresentar o necessário para um uso proficiente do git. Git é uma ferramenta de controle de versões VCS, ou Version Control System que tem como principais funcionalidades: 1) Versionamento: guardar histórico de alterações na base de código, permitindo identificar quem escreveu ou alterou qual parte do código, bem como reverter alterações que introduziram bugs. 2) Merge: fundir em uma única base de código alterações no código introduzidas por diferentes colaboradores, identificando e permitindo resolver conflitos. Importante: Não devemos confundir git com GitHub. Enquanto git é um software que roda localmente no seu computador, GitHub é uma plataforma web projetada como uma rede social de programação, e apenas construída para interfacear com o git. 2. INSTAÇÃO 2.1. UBUNTU Digite no terminal (Ctrl+Alt+T): sudo apt-get update sudo apt-get install git git --version O último comando verifica se o git foi instalado corretamente. No momento deste tutorial, é printado na tela: git version 2.7.4 2.2. WINDOWS Baixe o git para a sua versão (32-bit ou 64-bit) aqui: https://git-scm.com/download/win Utilize o git através do programa no menu iniciar chamado Git Bash. Bash é um prompt de comandos semelhante ao do Windows, mas que tipicamente acompanha Linux. Caso você não seja familiar, estes são os principais comandos: cd NomeDaPasta # navegar para uma pasta ls # listar o conteúdo da pasta atual mkdir NomeDaPasta # criar uma nova pasta rm NomeDoArquivo # remover arquivo rm NomeDaPasta -rf # remover pasta e todo seu conteúdo interno mv NomeDoArquivo NovoNomeDoArquivo # renomear arquivo mv NomeDoArquivo NomeDaPasta # mover arquivo para pasta
3. CONFIGURAÇÃO Para começar a fazer uso do git, é necessário configurar sua identidade com os comandos abaixo. Isto irá identificar você como autor do código que você enviar para o GitHub. No Ubuntu, utilize o Terminal (Ctrl+Alt+T), e no Windows utilize o Git Bash. git config --global user.name "Seu Nome" git config --global user.email seu@email.com OBS: Como os commits são públicos, eu não recomendaria colocar seu e-mail de verdade para evitar receber spam. Por exemplo, vb@hide.me é bom o suficiente e não gera problemas. 4. CRIANDO REPOSITÓRIO Um repositório é uma espécie de diretório sincronizável. Em um repositório é possível introduzir o código do seu projeto, bem como imagens, sons e demais arquivos que fazem parte do projeto para serem armazenados na nuvem, versionados e compartilhados com colaboradores. Criaremos o repositório no GitHub clicando em New repository na barra lateral. Só é necessário definir o nome do repositório.
Após a criação do repositório, entre em Settings e depois em Collaborators. Aqui você pode adicionar usuários do GitHub que estão autorizados para enviar código para o seu repositório, o que é útil para trabalhos colaborativos em grupo. 5. TRABALHANDO NO REPOSITÓRIO Aqui é um conceito importante de entender: o GitHub armazena um repositório central, a única fonte de verdade do projeto, e colaboradores devem clonar este repositório, o que significa criar uma cópia em suas máquina idêntica ao repositório central (ou remoto). Assim, sempre trabalharemos com dois repositórios, o repositório local, que correponde aos arquivos na sua máquina e armazenados no seu HD, e o repostório central (ou remoto), que corresponde aos arquivos armazenados no GitHub. Para clonar um repositório, obtenha a URL do seu repositório (disponível na página do repositório do GitHub) e digite o seguinte comando no Terminal ou no Git Bash: git clone https://github.com/victorbreder/meurepo.git Isto irá criar uma pasta com o nome do repositório dentro da pasta atual. Por exemplo, no meu exemplo, é criada a pasta MeuRepo. Basta navegar para dentro desta pasta com: cd MeuRepo Pronto, aqui dentro que devem ser inseridos e editados os códigos para ser possível sincronizá-los com o sistema de versionamento. Importante: Todos os comandos git... a seguir devem ser executados com o Terminal ou Git Bash navegados para dentro da pasta do repositório.
6. APLICANDO ALTERAÇÕES NO REPOSITÓRIO LOCAL Importante: O git não sincroniza alterações em tempo real da mesma maneira ferramentos como Google Drive ou DropBox. É necessário deliberadamente enviar estas alterações. Isto pode parecer incoveniente, mas é importante para criar pontos de restauração no histórico e para que o código seja sincronizado com colaboradores apenas quando estiver pronto e funcionando. Lembrando, temos dois repositórios, o local e o remoto. Para saber como está o estado do repositório local, isto é, quais arquivos foram adicionados, alterados ou removidos, utilizamos o comando: git status Um bloco de alterações na base de código é chamado de commit. Para adicionar arquivos específicos ao commit, utilizamos o comando: git add NomeDoArquivo Caso se deseja adicionar todas as alterações realizadas ao commit, basta executar: (É importante sempre rodar git status antes para ter certeza do que está sendo inserido no commit). git add. # adiciona ao commit todas as modificações # como listadas em git status Para aplicar estas alterações ao repositório local: git commit -m "mensagem descritiva das alterações" A mensagem é útil para identificar o ponto no histórico de alterações, tanto para caso seja necessário desfazer commits que introduziram bugs ou para que outras pessoas tomem conhecimento do progresso e de quais funcionalidades foram implementadas. 7. ENVIANDO E RECEBENDO ALTERAÇÕES DO REPOSITÓRIO REMOTO Para enviar suas alterações aplicadas (commitadas) ao repositório local para o repositório remoto do GitHub, deve ser executado o comando: git push origin master Para receber alterações que outras pessoas realizaram no repositório remoto, deve ser executado o comando: git pull origin master OBS: Caso você tente enviar alterações para o repositório remoto sem antes fazer pull, o git irá lembrar você.
8. RESUMO Navegar Terminal ou Git Bash para a pasta do repositório e executar os comandos: git status git add. git commit -m funcionalidade X implementada git pull origin master git push origin master