Introdução ao Git e GitLab

@allythy

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

Contribuindo com um projeto

Obrigado

Made with Slides.com