O que é o Git?
O Git é um sistema de controle de versão de arquivos - VCS (Version Control System) - utilizado por equipes de desenvolvimento de softwares. O controle de versão é muito importante quando várias pessoas estão editando o mesmo código em diferentes partes do mesmo arquivo ou projeto, por exemplo.
O Git mantém um histórico de qual alteração foi feita em um arquivo, quem alterou, quando e por que foi realizada essa alteração, para consultas futuras.
A instalação do Git é feita localmente no computador.
Git é diferente de Github.
Documentação de referência: https://git-scm.com/doc
Instalação do Git
Site para download e instalação do Git: https://git-scm.com/
O que é o Github?
O Github hospeda projetos que usam o Git.
O Github trabalha com repositórios (diretórios/pastas onde são armazenados nossos projetos).
Compartilhar projetos, interagir e colaborar com outros desenvolvedores ao redor do mundo, criar e publicar um portifólio, também são funcionalidades do Github.
Conceitos
Repositório: diretórios/pastas onde são armazenados os arquivos/projetos
Branch: ramificação a partir da linha cronológica principal durante o desenvolvimento de um sistema/projeto.
Linha cronológica do desenvolvimento.
Por exemplo, você está desenvolvendo um site em Html e CSS. Você pode fazer uma ramificação para desenvolver só o cabeçalho (head), outra para fazer o corpo (body), outra para um segundo desenvolvedor fazer um botão etc.
No final, quando a funcionalidade da ramificação estiver pronta, podemos juntar (merge) a ramificação (branch) à linha do tempo do projeto principal (main/master).
Commit: salva uma versão das alterações que foram feitas nos arquivos de um projeto. São as versões. São os "pontos na história”.
Merge: junção da ramificação (branch) à linha do tempo do projeto principal (main/master).
Remote: faz a conexão do repositório que está no computador com o Github.
Push: 'Empurra' os arquivos do repositório local que já receberam o commit e envia para o Github. Publica e cria uma versão no Github. “É o commit do Github”.
Pull: o contrário do push. Ele 'puxa' o que está no repositório do Github para o seu computador.
Roteiro e Comandos
Iniciando um novo projeto:
- criar uma pasta no computador com o nome do projeto
- clicar com o botão direito dentro da pasta criada e clicar em “Abrir com Code” (neste exemplo, usarei o VSCode)
- criar e editar um novo arquivo no VSCode chamado “Readme.md” (md é a extensão para markdown, linguagem de marcação) – o arquivo Readme.md contém uma descrição com as instruções do novo projeto
- Dentro da mesma pasta do projeto, clique com o botão direito do mouse e após em “Git Bash Here” para abrir o terminal “Git Bash”
- O terminal do Git é aberto
Comandos
git init – inicializa um novo repositório vazio no branch principal (master)
uma pasta oculta “.git” é criada no diretório (não apagar)
Antes de qualquer interação com o git, você precisa informar quem é você para que ele armazene corretamente os dados do autor de cada uma das alterações no código.
git config --local user.name "Seu nome aqui"
git config --local user.email "[email protected]"
git add 'nome do arquivo' – adiciona os arquivos para uma staging area (área de preparação). OU
git add . – adiciona todos os arquivos para a staging area
git status – mostra o status atual
Definições:
- HEAD: Estado atual do nosso código, ou seja, onde o Git os colocou
- Working Tree: Local onde os arquivos realmente estão sendo armazenados e editados
- index: Local onde o Git armazena o que será commitado, ou seja, o local entre a working tree e o repositório Git em si.
git commit -m 'mensagem' – salva a versão do arquivo com as últimas alterações. O parâmetro -m escreve uma mensagem/informação sobre o commit.
Obs.: o Git tem mudado a nomenclatura do Branch principal. O padrão é “master”, mas pode aparecer também como “main”.
git branch - alterando o branch principal de 'master' para 'main'.
git branch -M 'novo_nome' – comando para renomear a Branch atual:
git log - mostra o histórico das alterações que foram realizadas
git log --oneline - mostra o histórico das alterações de forma resumida em uma única linha
git log -p - mostra o histórico detalhado
link com mais opções: https://devhints.io/git-log
obs.: para retornar do log, basta apertar a tecla 'q' para voltar "ao normal" em nossa linha de comando.
No Github, criar um repositório para que tudo o que estiver dentro do repositório (Git) no computador seja enviado para um repositório no Github. Assim, os arquivos do projeto ficam disponíveis no Github para serem visualizados e utilizados por outras pessoas da equipe ou outros usuários do Github.
Após fazer o login na sua conta do Github, entrar no menu do perfil e depois em “your repositories”. Clicar em "New" para criar um novo repositório:
Informe um nome para o repositório, defina se ele será Público ou Privado e depois clique em “Create Repository”.
Copiar o link do repoisitório "https://github.com/*username*/*NovoProjeto.git*"
No Git Bash novamente, agora vamos conectar o repositório do Git com o repositório do Github:
git remote add origin 'link.git' - conexão do repositório local com o repositório do Github. Esse comando é executado só uma vez.
git push -u origin main – o comando push envia os arquivos que receberam o commit no computador anteriormente.
Este "- u" significa que sempre que eu fizer o comando 'git push' e estiver no 'main' ele sempre vai enviar para este remote 'origin'.
Atualize a página do Github. Os arquivo do projeto devem aparecer no repositório.
Ignorando Arquivos
- Criar um arquivo chamado .gitignore e, com ele aberto, escrever quais arquivos ou pastas não devem ser monitorados pelo Git.
Outros comandos:
- git init --bare (cria um repositório vazio. repositório do git que só vai controlar as alterações, ou seja, não vai conter arquivos editados, só vai servir para armazenar as alterações)
- git remote (lista todos repositórios remotos que meu repositório local conhece)
- git remote add local d:/servidor (para criar um remote)
- git remote -v (para ver detalhes da localidade)
- git remote remove local (para remover)
- git clone /d/servidor projeto
- git remote rename origin local (renomeando um repositório de 'origin' para 'local')
- git rebase 'nome_do_branch' (traz todos os commits de uma branch para a master/main)
- git log --graph (forma de ver o log de uma forma visual)
- git restore *nome_do_arquivo (para descatar as alterações do arquivo antes do commit)
- git reset HEAD *nome_do_arquivo (para descatar as alterações do arquivo antes do commit e depois do add)
- git revert *numero_do_hash (desfaz um commit)
- git stash (salva as alterações do arquivo para serem trabalhadas posteriormente sem dar um commit)
- git stash list (lista todos os stash)
- git stash pop (traz as alterações guardadas no stash e apaga o stash)
- git diff *numero_do_hash1 *numero_do_hash2 (ver a diferença entre os commits)
- git tag -a v0.1.0 (para criar uma tag no seu código)
- git push origin v0.1.0 (para enviar esta tag para o GitHub)
Links
Git Cheatsheet: https://ndpsoftware.com/git-cheatsheet.html
Guia: https://training.github.com/downloads/pt_BR/github-git-cheat-sheet/
Vizualizing: http://git-school.github.io/visualizing-git/