/GuiaGit

Projeto no qual ensino a utilização do Git

Guia rápido de como usar o Git e o Github

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.
Branch
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).
Branch


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)

Abrir com Code

  • 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

Readme

  • 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”

Git Bash

  • O terminal do Git é aberto

Git Bash



Comandos

git init – inicializa um novo repositório vazio no branch principal (master)
git init
uma pasta oculta “.git” é criada no diretório (não apagar)
folder

(master)
git init (master)

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 "seu@email.aqui"

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

Staging Area

git add

git add (all)

git status – mostra o status atual
git status

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.
git 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 branch

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:

Repositórios

Repositórios

Informe um nome para o repositório, defina se ele será Público ou Privado e depois clique em “Create Repository”.

Link

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 remote

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'.

git push origin main
git push git push git push

Atualize a página do Github. Os arquivo do projeto devem aparecer no repositório.

git checkout
git checkout git checkout

git merge
git merge

git clone
git clone

git pull
git clone

remover
git rm

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/