Introdução ao Git e GitLab
@allythy



Telegram: https://t.me/allythy
GitHub: https://github.com/allythy
GitLab: https://gitlab.com/allythy
Site: https://allythy.github.io/
E-mail: allythy@potilivre.org
O que é um Sistema de Versão de Controle (VCS) ?
- Reverter um um arquivo ou projeto
- Comparar as mudanças
- Saber quem fez alguma alteração
Por que eu deveria usar ?

Tipos de Sistema de Controle de Versão
Sistemas de Controle de Versão Local

Sistemas de Controle de Versão Centralizado (CVCS)

Sistemas de Controle de Versão Distribuído (DVCS)

Por que eu deveria usar o git ?
A forma que ele trata os dados


Quase todas as operações são locais

Possui integridade
SHA-1
74a39bb962c5f40b0c6ab1db1704405d33814b50
7e9c515f547087584976ed4d6c65442cd2b7c7bf
5396e0a2f5c8062fba49286484ac8348204b7015
f977cdaaeb22b6e14a06ae59cc623272a7ac1c68
1d8b9eedf87021ea2b17b75c7f297ea93fbfdda0
Quem está usando ?

Quem criou ?

Linus Torvalds - 2005
Instalação do git no GNU/Linux
No Debian e derivados:
apt install git
Configurações inicias
Define o nome do úsuario:
git config --global user.name "John Doe"
Define o endereço de-mail :
git config --global user.email johndoe@example.com
Define um editor de texto padrão:
git config --global core.editor vim
Verificandos suas configurações:
git config --list
Obtendo Ajuda
Documentação Online: Pro Git
Através da linha de comando:
git help comando
man git
Criando um projeto local
Inicializando um repositório:
git init
Crie um arquivo chamado aula1:
touch aula1
Digite o comando abaixo para ver o estado do repositório:
git status

git add arquivo1 arquivo2
git add .
Monitorando os arquivos:

git commit
git commit -m "Descrição do que você fez nesse commit"
Consolidando as alterações:
O que o git tá fazendo por baixo


Visualizando o Histórico de Commits:
Mostrar o histórico de commits:
git log
Mostrando o histórico em uma única linha:
git log --oneline
Mostrando o commit de autor:
git log --author=allythy
Mostrando o commit de autor:
git shortlog
Ferramenta visual para ver o histórico de commits
Instale o gitk:
apt install gitk
Como usar:
gitk &
Desfazendo alterações
Modificar a mensagem do último commit:
git commit --amend
Você fez o um commit e esqueceu de colocar um arquivo que estava na staging area:
git commit -m 'primeiro commit'
git add novoArquivo
git commit --amend
Desfazendo um Arquivo Modificado
touch arquivo
git add arquivo
git status
echo "mensagem" > arquivo
git status
Quero descartar essa modificação:
git checkout -- arquivo
Cenário:
Tirando um arquivo da Staging Area
git reset arquivo
Desfazendo um commit
--soft
--mixed
--hard
Desfaz um commit, mas deixa os arquivos na Staging Area
git reset --soft HEAD~1
Desfaz um commit, mas deixa os arquivos na working directory
git reset --mixed HEAD~1
Desfaz o commit deixando igual ao commit que você informou, sem nada na Staging Area ou no working directory
git reset --hard HEAD~1
Tem como desfazer um reset ?
Tem como desfazer um reset ?
git reflog
git reset --hard número-do-commit
Trabalhando com Branch
O que é uma Branch ?
Uma branch é uma novo linha de desenvolvimento que permite isolar o código de uma nova funcionalidade, matendo a linha base estáve, evitando o represamento de código. No git, o uma branch é apenas uma referência para um commit.
Criando uma branch
git branch nome-da-branch
Exibindo as branch do repositório
git branch
Trocando de branch
git checkout nome-da-branch
Como o Git sabe o branch em que você está atualmente ?
Ele mantém um ponteiro especial chamado HEAD

Cenário:
touch arquivo1
git add .
git commit -m" branch testing"
git checkout master
Como o Git sabe o branch em que você está atualmente ?
git merge nome-da-branch
Fazendo o merge
O que é um merge Fast forward ?

Criando uma divergência entre as branch
Cenário:
touch arquivo3
git add .
git commit -m" branch master"
git checkout testing
touch arquivo2
git add .
git commit -m" branch testing"
git checkout master

Fazendo o merge
git merge testing

Gerando um conflito
Cenário:
vim arquivo1
git add .
git commit -m" branch master"
git checkout testing
vim arquivo1
git add .
git commit -m" branch testing"
git checkout master
Resolvendo um conflito
git status
Resolvendo um conflito
<<<<<<< HEAD
<h1>titulo</h1>
=======
<h1>outro titulo</h1>
>>>>>>> testing
git add .
git merge --continue
Trabalhando com remotos
Exibindo os repositórios remotos
git remote
git remote -v
Adicionando um repositório remoto
git remote add [nome] [url]
git remote add site git@gitlab.com:allythy/minicurso-git-gitlab.git
Exemplo:
Sintaxe:
Enviando arquivos para o repositório remoto
git push [nome-remoto] [branch]
git push origin master
Exemplo:
Sintaxe:
Baixando arquivos do repositório remoto
git pull
git fetch [nome-remoto]
Sintaxe:
ou
git fetch origin
Exemplo
git merge origin/master
Renomeando Remotos
git remote rename [nome-atual] [novo-nome]
Sintaxe:
git remote rename site blog
Exemplo
Apagando o repositório remoto:
git remote rm [name]
Sintaxe:
git remote rm site
Exemplo
Criando uma conta no Gitlab
Acessem:
https://gitlab.com
Contribuindo com um projeto
Obrigado
Introdução ao Git e GitLab
By allythy
Introdução ao Git e GitLab
- 491