DEV Community

itsfantoni
itsfantoni

Posted on

Primeiros passos em Git e GitHub

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:

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

  1. 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:

Willian Justen: Git e Github para Iniciantes

Receitas de código: Git - O que é um branch

Top comments (0)