# script commit gitlab
# mauricio vancine
# instalar o git
--version
git -all
sudo apt install git
# configuracao inicial do git
--global user.name "mauriciovancine"
git config --global user.email "mauricio.vancine@gmail.com"
git config
# conferindo
git config user.name
git config user.email--list
git config
# repositorios remotos
# gerar uma chave
-keygen -t ed25519 -C "mauricio.vancine@gmail.com" # tres enters
ssh
# verificar
~/.ssh
cd
cat id_ed25519.pub
# ligar o repositorio do pc ao git
# sudo apt install xclip
-sel clip < ~/.ssh/id_ed25519.pub
xclip -T git@gitlab.com:mauriciovancine
ssh
@github.com:mauriciovancine/git-course.git
git remote add origin git
git remote-v
git remote
###---------------------------------------------
# iniciar o repositorio git
# definir diretorio
/media/mauricio/data/gitlab
cd
# clonar um repositorio
@gitlab.com:mauriciovancine/r-enm.git
git clone git
# iniciar o git
git init
# listar
-la
ls
# reportar o estados do repositorio
# untracked
git status
# commit - criar um snapshot dos arquivos
-m
git commit
# verificar
# nada para ser feito
git status
## 10 visualizando logs
# mostrar as infos dos commits
# mostrar commits
git log
# descricao dos commits
--decorate
git log
# filtro autor dos commits
="mau"
git log author
# mostra os autores que comitaram
git shortlog
# mostra numero de commits por pessoas
-sn
git shortlog
# mostra de forma grafica os branchs
--graph
git log
# mostra a hash
588867d3f12f9a3f819dbf9657614c92a4d5237f
git show
## 11 visualizando o diff
# mudancas antes do envio
# verificar
git status
# editar
subl readme.md
# visualizar as mudancas antes de commitar
git diff
# listar o nome dos arquivos modificados
--name-only
git diff
# commitar
-am "edit"
git commit
# ver commit
git log
# mostrar commit
git show a06fd917431bc1dffdc8565bff0fe7b13d8bfc3c
## 12 desfazendo coisas
# 1. voltar para antes da edicao
git log
git status# edit
subl readme.md
git diff
git status
git checkout readme.md
git diff
# 2. retirar do stage (git add) e voltar antes da edicao
# edit
subl readme.md
git add readme.md
git diff
git status
git reset HEAD readme.md
git status
git checkout readme.md
git diff
# 3. voltar do commit
# edit
subl readme.md
git status-am "soft"
git commit
git log
# 1. git reset --soft: volta o commit e mantem arquivo no staged
--soft a06fd917431bc1dffdc8565bff0fe7b13d8bfc3c # hash anterior
git reset
git status
subl readme.md-am "mixed"
git commit
# 2. git reset --mixed: volta o commit e arquivo fica em modofied
--mixed bb63de7478f5d789029a91401cb1095b2fb4ab2d
git reset
git status
subl readme.md-am "hard"
git commit
# 3. git reset --hard: volta o commit e arquivo volta em unmodified
--hard bb63de7478f5d789029a91401cb1095b2fb4ab2d
git reset
git log
git status
# o git reset --hard altera o historico dos commits
###---------------------------------------------###
# enviar os arquivos para o repositorio
-u origin master
git push
git push
## 16 enviando mudancas para um repositorio remoto
subl readme.md
git status-am "commit to github"
git commit
git log
git push origin master
## 17 clonando repositorios remotos
# download de um repositorio do github para pc
cd ..@github.com:mauriciovancine/git-course.git github-course-clone # com chave
git clone git://github.com/mauriciovancine/git-course # publico
git clone https
## 18 fazendo fork de um projeto
# copiar um repositorio para o proprio github
# sempre de outro usuario
###---------------------------------------------###
## secao 5 ramificacao (branch)
## 19 o que e um branch e por que usar?
# branch: ponteiro movel que leva a um commit
# cada commit gera uma hash (código) e para cada hash gera um snapshot
# novo branch aponta para o mesmo commit ou para outro commit
# utilidade:
# 1. modificar os arquivos sem modificar o local principal (master)
# 2. facilmente desligavel
# 3. multiplas pessoas trabalhando
# 4. evita conflitos
# mescla-se o branch final ao branch paralelo
## 20 criando um branch
# criando um branch
-b testing
git checkout
# verificando branch
git branch
## 21 movendo e deletando branches
# verificando branch
git branch
# movendo para master
git checkout master
# verificando branch
git branch
# movendo para testing
git checkout testing
git checkout master
# apagar branch
-D testing
git branch
# verificando branch
git branch
# 22 entendendo o merge
# unir branchs - branch separado paralelo a mais para unir
# 23 entendendo o rebase
# unir branchs - branch separado linera logo a frente
# 24 merge e rebase na pratica
-merge
mkdir rebase-merge
cd rebase
git init
subl foo
git status
git add foo-m "add foo"
git commit
-b test
git checkout
subl bar
git add bar-m "add bar"
git commit
git log
git checkout master
git log
subl fizz
git add fizz-m "add fizz"
git commit
git log
# merge
git merge test
git log--graph
git log
# rebase
subl buzz
git add buzz-m "add buzz"
git commit
git log
-b rebase
git checkout
subl bla
git add bla-m "add bla"
git commit --graph
git log
git checkout master
git log
subl seila
git add seila-m "add seila"
git commit
git log
git rebase rebase
git log--graph
git log
###---------------------------------------------###
### secao 6 extras
## 25 criando o .gitignore
# ignora trackeamento de arquivos
# arquivo no repositorio para
subl data.txt
git status
# *.txt
subl .gitignore
git status
# data
subl .gitignore
git status
# https://git-scm.com/docs/gitignore
# https://github.com/github/gitignore
## 26 git stash e lindo
# responsavel por guardar modificacoes nao commitadas
cd..-course
cd git
subl readme.md
git status
git stash
git status
-b bla
git checkout
git log
git stash apply
git stash list
git stash clear
## 27 alias para que te quero
# atalhos
git status--global alias.s status
git config
git s
## 28 versionando com tags
# sobe tags especificas
-a 1.0.0 -m "readme finalizado"
git tag
--tags
git push origin master
git tag
## 29 salvando sua sexta com git revert
# nao perde o commit, apenas retorna ao estado anterior
subl readme.md-am "add"
git commit
git log# hash
git show
git log# hash
git revert
# hash
git show
## 30 apagando tags e branches remotos
-d 1.0.0
git tag
git push origin master
:1.0.0
git push origin
###-----------------------------------------------###
# These are common Git commands used in various situations:
# start a working area (see also: git help tutorial)
# clone Clone a repository into a new directory
# init Create an empty Git repository or reinitialize an existing one
# work on the current change (see also: git help everyday)
# add Add file contents to the index
# mv Move or rename a file, a directory, or a symlink
# reset Reset current HEAD to the specified state
# rm Remove files from the working tree and from the index
# examine the history and state (see also: git help revisions)
# bisect Use binary search to find the commit that introduced a bug
# grep Print lines matching a pattern
# log Show commit logs
# show Show various types of objects
# status Show the working tree status
# grow, mark and tweak your common history
# branch List, create, or delete branches
# checkout Switch branches or restore working tree files
# commit Record changes to the repository
# diff Show changes between commits, commit and working tree, etc
# merge Join two or more development histories together
# rebase Reapply commits on top of another base tip
# tag Create, list, delete or verify a tag object signed with GPG
# collaborate (see also: git help workflows)
# fetch Download objects and refs from another repository
# pull Fetch from and integrate with another repository or a local branch
# push Update remote refs along with associated objects
Introdução ao controle de versão com git, GitHub e RStudio
Principais conceitos de controle de versão usando git
Contextualização
Nas disciplinas que ofereço, geralmente eu começo com uma parte de controle de versão usando git. Em 2021 ofereci um minicurso para o pessoal da Universidade Federal Rural de Pernambuco (UFRPE).
Falando com o Prof. Diogo Provete sobre disciplinas e como ensinar git, chegamos à conclusão que é fundamental ter um material didático sobre esse assunto.
Este tutorial aborda os conceitos gerais de controle de versão usando o git e sua integração com o GitHub e o RStudio.
Recomendo também olhar o minicurso gitR: controle de versão com git, GitHub e RStudio. Este post é a transcrição do mesmo.
Controle de versão
git
Instalação
Terminal bash e desktop
Estágios do controle de versão
git init: começando
git status: verificando
git add: adicionando
git commit: guardando
git push: guardando
Para se aprofundar
- Curso gratuito (português): https://rogerdudler.github.io/git-guide/index.pt_BR.html
- Documentação oficial Git: https://git-scm.com/doc
- GUI recomendada: GitHub Desktop
Controle de versão - Gabriel Nakamura
Fonte da imagem: Pexels.
O que são Git e GitHub?
- Git: sistema de controle de versão distribuído. Ele permite que você acompanhe alterações no seu código/projeto, volte a versões anteriores e trabalhe com ramificações (branches).
- GitHub: plataforma online baseada em Git, usada para hospedar repositórios, colaborar com outras pessoas e compartilhar código.
Instalação do Git
Windows / Linux / macOS:
- Acesse: https://git-scm.com
- Baixe e instale o Git.
- Após a instalação, abra o terminal (ou Git Bash no Windows) e configure seu nome e e-mail:
git config --global user.name "Seu Nome"
git config --global user.email "seu@email.com"
Conceitos Básicos
- Repositório (repo): Pasta que Git está monitorando.
- Commit: Um “instantâneo” do seu projeto em determinado momento.
- Branch: Linha paralela de desenvolvimento.
- Merge: Juntar mudanças de uma branch com outra.
- Clone: Copiar um repositório existente.
- Push / Pull: Enviar/receber atualizações do GitHub.
Criando um Repositório Local
mkdir meu-projeto
cd meu-projeto
git init # inicia o repositório Git
touch README.md # cria um arquivo (Linux/mac) ou use 'echo > README.md' no Windows
git add README.md
git commit -m "primeiro commit"
Conectando com o GitHub
- Crie uma conta no GitHub
- Clique em “New Repository” e dê um nome ao projeto (ex:
meu-projeto
) - Copie a URL do repositório (HTTPS ou SSH)
- No terminal:
git remote add origin https://github.com/seu-usuario/meu-projeto.git
git branch -M main # garante que a branch principal se chama 'main'
git push -u origin main # envia os arquivos para o GitHub
Ciclo de Trabalho no Git
# Modificou algum arquivo?
git status # verifica o que foi alterado
git add arquivo.txt # adiciona ao "estágio"
git commit -m "descrição das mudanças" # salva as alterações localmente
git push # envia as mudanças para o GitHub
Clonar Repositórios e Colaborar
Clonar:
git clone https://github.com/usuario/repositorio.git
Criar nova branch:
git checkout -b nova-feature
Voltar à branch principal e unir mudanças:
git checkout main
git merge nova-feature
git push
Sincronizar com o Repositório Remoto
Se outra pessoa fez alterações:
git pull # baixa e integra as alterações remotas
.gitignore
Crie um arquivo chamado .gitignore
e liste os arquivos/pastas que você não quer versionar, como:
*.log
__pycache__/
dados_sensiveis.csv
Dicas Úteis
- Use
git log
para ver o histórico de commits. - Use
git diff
para ver mudanças não commitadas. - Use
git stash
para guardar mudanças temporariamente sem fazer commit.