Link para visualizar no notion: Notion Link
O que é Git e GitHub?
1. Git
Criado pelo Linus Torvalds, mesmo criador do kernel Linux. o Git é um Sistema (open source) de Controle de Verões Distribuído (DVCS). Ele permite que o programador tenha acesso a versões anteriores de um código, visto que armazena todas as alterações feitas nesse código. Isso é muito útil em um trabalho em equipe, pois permite o acesso ao código por qualquer pessoa em qualquer lugar. Ou seja, O Git armazena o histórico desse código.
2. GitHub
O GitHub, que é considerado como uma rede social de programadores, é uma plataforma que usa o sitema Git como sistema de controle. É usado para gerenciar códigos e manter a comunicação entre programadores.
Como criar uma conta no GitHub:
Acesse https://github.com e Inscreva-se / Sign Up.
Utilizando o Git
1. Instalando o Git
Abra seu terminal (Ctrl+Alt+T) e rode o comando: sudo apt-get install git
2. Configurando o Git
Ainda no terminal, execute:
git config --global user.name "Seu Nome Aqui"
e em seguida:
git config --global user.email “seuemailaqui@email.com”
3. Inicializando um repositório
mkdir git-course
// cria um novo diretório/pasta chamado git-course
cd git-course/
// muda de diretório para git-course
git init
// inicializa o repositório git no diretório git-course
4. Editar um arquivo
Podemos fazer isso usando o terminal ou um editor de textos do sistema. Meu exemplo será usando o terminal:
vi Readme.md
i: começa a editar
Esc: sai do modo de inserção
: (dois pontos): inicia algum comando
w: escrever e salvar
q: sair
wq: salvar e sair
5. Add e Status
git add Readme.md
outras opções:
git add .
// adiciona todos os arquivos modificados no stage
git status
// mostra que o Readme.md já pode ser comitado
// se você modificar o Readme.md nesse momento e rodar o comando git status novamente, o git irá apontar uma modificação no arquivo. Nesse caso, rode git add Readme.md novamente.
git commit -m "Add Readme.md"
// comitar: criar um snapshot/versão do arquivo.
// -m: indicação de mensagem sobre o que você fez no arquivo, para melhor organização.
outra opção: git commit -am
// adiciona todos os arquivos modificados na área de stage e faz commit dos mesmos.
6. Git Log
git log
// mostra o log do commit (alterações, informações)
git log —author==”Nome”
// mostra os commits com autor “Nome”
git shortlog
// mostra autores, quantos commits fizeram e quais foram
git shortlog -sn
// mostra autores e quantos commits fizeram
- Ao rodar o git log, é possível ver o “commit” e ao lado dele, o hash deste mesmo commit. Com esse mesmo hash, é possível rodar o comando “git show ”, que mostrará o commit indicado.
7. Checkout
git checkout Readme.md
// reseta a mudança feita em Readme.md sem rodar o git add depois.
Se o arquivo Readme.md for alterado e em seguida executarmos o add, (note que ao rodar um diff aqui, não haverá diferenças), ainda é possível voltar atrás e tirar esse arquivo do stage com:
git reset HEAD Readme.md
Ao rodar um git diff
agora, será possível visualizar as modificações feitas.
8. Git Reset
git reset --soft
// Desfaz um commit e retorna o arquivo a staged
git reset --mixed
// Desfaz um commit e retorna o arquivo a modified
git reset --hard
// Desfaz um commit (ignora as totalmente modificações feitas) (deve ser usado com bastante cuidado)
9. Git remote add
Após criar um repositório no GitHub:
git remote add origin <endereço-do-repositório-git-hub>
10. Git push
Envia os arquivos, logs, informações presentes para o repositório do GitHub
git push -u <endereço-final> <endereço-inicial>
ou seja:
git push -u origin master
obs: leia:
About remote repositories - GitHub Docs
Creating a personal access token - GitHub Docs
ou assista:
Willian Justen - 15. Criando chave SSH
como checar sua chave após ter gerado a mesma:
cd ~/.shh
ls
cat *.pub
No GitHub, em settings > SSH and gpg keys, adicione uma nova SSH key
Se após isso modificarmos os arquivos (e commitarmos), devemos rodar o push de novo:
git push origin master
11. Git clone
No repositório que deseja clonar, vá em Code > SSH > copie o ssh
git clone <ssh> nome-diretório
Obs: Ao clonar um repositório de terceiros, você não poderá mandar as atualizações pro GitHub. Apenas se o Repositório tiver sido criado por você.
12. Fork
Permite você copiar um projeto, fazer alterações nele e depois enviar um pull request para o criador do repositório, que pode aceitá-lo ou não.
13. Branch
Um branch no git é um ponteiro para as alterações feitas nos arquivos do projeto. Branch, do inglês ramo, indica essa ramificação que ocorrerá no arquivo, sem que um ramo necessariamente interfira no outro. Por exemplo: alguém pode estar trabalhando no master enquantro você corrige algum bug no branch x.
git checkout -b <nome-do-branch>
// criando um novo branch
git branch
// mostra quais são os branchs do projeto atual e indica em qual branch você está com um asterístico
git checkout <nome-do-branch>
// troca para o branch indicado
git branch -D <nome-do-branch>
// apaga o branch indicado
União dos Branchs:
- Merge
Não altera as informações já existentes, pois cria um commit extra para juntar branchs. (Geralmente mais utitizados nos casos de pull request)
- Rebase
Deixa os branches lineares (aplicando todas as mudanças pra frente da fila). O ruim dele é que reescreve o histórico, mudando a ordem dos commits, o que pode gerar conflitos
hWillian Justen - 22. Entendendo o Merge
14. Arquivo .gitignore
É um arquivo que indica ao Git quais arquivos ele deve ignorar.
15. Git Stash
- Guarda modificações não comitadas de modo que podem ser acessadas depois.
- Após modificar um arquivo, e rodar:
git stash
A modificação será salva como wip (work in progress)
Para aplicar as mudanças:
git stash apply
Obs:
git stash list
// mostra a lista dos stashs
git stash clear
// limpa o que estiver no stash
16. Tags
São usadas para indicar um commit que represente alguma mudança grande no projeto
- Tag Leve: Aponta para um commit em específico
- Tag Anotada: armazenam um objeto completo no banco de dados do git
Criando uma tag anotada:
git tag -a <nome> -m <mensagem>
Versionar uma tag:
git push origin <nome>
Versionar todas as tags:
git push origin --tags
Deletar uma tag:
git tag -d <nome>
Criando uma tag após já ter feito o commit:
git tag -a <nome> <checksum-do-commit>
17. Git Revert
Como uma alternativa ao reset, o git revert pode ser usado quando você quer desfazer as alterações mas ainda quer manter o commit com o erro, para posteriores estudos.
git revert <commit-hash>
18. Pull
git pull
Checa se o repositório na rua máquina está atualizada em relação ao repositório correspondente no github, e se não, faz a atualização.
19. Apagar tags e branches no repositório
git push origin :<tag-ou-branch>
Bibliografia:
Top comments (0)