Skip to content
Snippets Groups Projects
Commit eb295487 authored by Eduardo E. R. Junior's avatar Eduardo E. R. Junior
Browse files

Inclui novas rotinas e detalha comentários nas existentes

parent d01ef19a
No related branches found
No related tags found
1 merge request!54Issue#65
--- ---
title: "Exemplos de Rotina" title: "Exemplos de Rotina"
author: "PET Estatística UFPR" author: "PET Estatística UFPR"
graphics: yes graphics: yes
header-includes:
\usepackage{multicol}
\usepackage{cleveref}
output: output:
pdf_document: pdf_document:
template: ../template.tex template: ../template.tex
...@@ -14,111 +17,407 @@ output: ...@@ -14,111 +17,407 @@ output:
\appendix \appendix
\chapter{Exemplos de Rotinas Git} \chapter{Exemplos de Rotinas}
Neste apêndice são descritas brevemente algumas das rotinas mais usuais Neste apêndice são descritas brevemente algumas das rotinas mais usuais
em projetos sob sistema de versionamento Git. A maioria dos exemplos em projetos Git. A maioria dos exemplos estão detalhados na apostila e
foram apresentados no decorrer da apostila e estão resumidos neste foram resumidos nesta coletânea. Abaixo temos a lista de rotinas aqui
coletânea. presentes:
\begin{multicols}{2}
\footnotesize
\begin{description}
\item[Configure usuário e e-mail,] pág. \pageref{routine1}
\item[Inicie um projeto git local,] pág. \pageref{routine2}
\item[Trabalhe com ramos,] pág. \pageref{routine3}
\item[Visualize diferenças,] pág. \pageref{routine4}
\item[Resolva conflitos de \textit{merge},] pág. \pageref{routine5}
\item[Visualize seu projeto,] pág. \pageref{routine6}
\item[Volte versões anteriores,] pág. \pageref{routine7}
\item[Reescreva \textit{commits},] pág. \pageref{routine8}
\item[Adicione chaves públicas,] pág. \pageref{routine9}
\item[Trabalhe remotamente,] pág. \pageref{routine10}
\item[Manipule ramos remotos,] pág. \pageref{routine11}
\item[Adicione local remoto,] pág. \pageref{routine12}
\end{description}
\end{multicols}
\pagebreak \pagebreak
\routine{Clonar, Modificar e Subir} <!-- ------------------------------------------- -->
\hlabel{routine1}
\routine{Configure usuário e e-mail}
```{r, engine='bash', echo=TRUE, eval=FALSE} ```{r, engine='bash', echo=TRUE, eval=FALSE}
# Clonar o projeto desta apostila:
git clone git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
# Modifique o projeto antes de executar o código abaixo. ## Configurando localmente
## - válido para o repositório atual
git config user.name "Name Lastname"
git config user.email "namelastname@servidor"
# Commitar o projeto: ## Configurando globalmente
git commit -a -m "Sua Mensagem de Commit" ## - válido para todos os repositórios do computador
# Enviar projeto ao servidor (branch master, servidor origin): git config --global user.name "Name Lastname"
git push origin master git config --global user.email "namelastname@servidor"
## Obs.: As configurações locais se sobrepõem as
## globais, quando as duas forem avaliadas.
``` ```
\routine{Resolver conflito de merge} <!-- ------------------------------------------- -->
\hlabel{routine2}
\routine{Inicie um projeto Git local}
```{r, engine='bash', eval=FALSE, echo=TRUE} ```{r, engine='bash', echo=TRUE, eval=FALSE}
# Requisitar merge:
git merge ramo_teste
# Resolver conflitos manualmente. ## Em um diretório que deseja-se versionar
# Finalizar merge com o commit: ## Inicia o versionamento Git
git commit -a -m "Merge do ramo_teste" git init
``` ## Verifica o estado do repositório
git status
\routine{Incorporar o remoto ao local} ## Adicione os arquivos para receber o commit
git add file1.txt file2.R file3.txt file4.Rmd
## Registre a versão do repositório com uma mensagem
## informativa
git commit -m "Inicia repositório"
## Verifica o histórico de versões
git log
```{r, engine='bash', eval=FALSE, echo=TRUE}
# Listando os servidores remotos:
git remote
# Adicionando novo remote com nome remoto:
git remote add remoto git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git
# Atualizando arquivos locais:
git pull
``` ```
\routine{Resolver um bug} <!-- ------------------------------------------- -->
\hlabel{routine3}
\routine{Trabalhe com ramos}
```{r, engine='bash', eval=FALSE, echo=TRUE} ```{r, engine='bash', echo=TRUE, eval=FALSE}
## Verifica os ramos existentes
git branch
## Cria um ramo, para trabalho específico como:
## - Corrigir bugs
## - Desenvolver features
## - Tarefas em geral
git branch bugfix git branch bugfix
## Altera versionamento para o ramo criado
git checkout bugfix git checkout bugfix
# Modifica o código de acordo com o necessário. ## Adiciona as alterações que corrigem o bug
git add app.R
git commit -a -m "Bug corrigido" ## Registra as alterações
git commit -m "Altera delimitadores da função"
## Retorna para o ramo principal
git checkout master git checkout master
## Incorpora ao ramo principal as alterações
## realizados no ramo bugfix
git merge bugfix git merge bugfix
## Deleta o ramo responsável pela correção do bug
git branch -d bugfix git branch -d bugfix
``` ```
\routine{Deletar ramos} <!-- ------------------------------------------- -->
\hlabel{routine4}
\routine{Visualize diferenças}
```{r, engine='bash', echo=TRUE, eval=FALSE} ```{r, engine='bash', echo=TRUE, eval=FALSE}
# Listar ramos:
git branch ## -------------------------------------------
# Deletar ramo local: ## Diferenças não commitadas
git branch -d "nome_ramo"
# Deletar ramo remoto: ## Lista as diferenças entre o último commit e o
git push origin :nome_ramo ## estado do repositório no working directory
git diff
## Diferença para um único arquivo
git diff file.Rmd
## -------------------------------------------
## Diferenças entre versões commitadas
## Verifica os registros com referência
git reflog
## Lista as diferenças entre o último e o
## antepenúltimo registro
git diff HEAD~0 HEAD~2 ## ou
## -------------------------------------------
## Diferenças entre ramos
## Lista diferenças entre os ramos master e
## feature1
git diff master feature1
## Obs.: Programas externos podem ser utilizados para
## visualizar diferenças use difftool no lugar de
## diff, ver no cap. 06
``` ```
\routine{Criar ramo de um commit passado} <!-- ------------------------------------------- -->
\hlabel{routine5}
\routine{Resolva conflitos de merge}
```{r, engine='bash', echo=TRUE, eval=FALSE} ```{r, engine='bash', eval=FALSE, echo=TRUE}
# Verificar código commit:
## Incorpora modificações realizadas no ramo feature
git merge feature
## Edite e salve o(s) arquivo(s) em conflito, as
## porções em conflito são destacadas por <<< === >>>
## Finaliza merge com o commit:
git commit -a -m "Merge do ramo feature"
```
<!-- ------------------------------------------- -->
\hlabel{routine6}
\routine{Visualize seu projeto}
```{r, engine='bash', eval=FALSE, echo=TRUE}
## Histórico de registros
git log git log
# Criando branch com commit do código
# ec3650c8661d75b486a236e3d416ab58db1d596a:
git branch novo_branch ec3650c8661d75b486a236e3d416ab58db1d596a
# Mudando para novo_branch ## Histórico de registros em uma linha com trajetória
git checkout novo_branch ## dos ramos
git log --graph --oneline
## Histórico de registro com referência
git reflog
## Histórico de registro via interface gráfica padrão
gitk
``` ```
\routine{Voltar o projeto para um commit} <!-- ------------------------------------------- -->
\hlabel{routine7}
\routine{Volte versões anteriores}
```{r, engine='bash', echo=TRUE, eval=FALSE} ```{r, engine='bash', echo=TRUE, eval=FALSE}
# Listando commits pelo nome e código de identificação:
git log --pretty=oneline
# Voltando a um commit anterior, em que seu código ## Verifica o histórico de versões do repositório
#de identificação é: ec3650c8661d75b486a236e3d416ab58db1d596a. ## - Guarde o SHA1 ID do registro desejado: ec3650c8
git checkout ec3650c8661d75b486a236e3d416ab58db1d596a git log --oneline
## -------------------------------------------
## Descartar todas as alterações até um commit
git reset --hard ec3650c8
## Obs.: Reescreve a história do repositório, não
## é recomendável reescrever a linha do tempo quando
## se está em um projeto colaborativo remoto.
## -------------------------------------------
## Reverte o estado atual para um registro específico
git revert ec3650c8
git commit -am "Retorna projeto para versão funcional"
## Obs.: Faz um merge da versão atual com a versão do
## SHA1 ID informado. POdem haver conflitos que devem
## ser resolvido para concluir a reversão.
## -------------------------------------------
## Cria um ramo provisório a partir de um SHA1 ID
git checkout ec3650c8
## Visualiza os ramos existentes
git branch
## Cria um ramo denifitivo com o estado no SHA1 ID
git checkout -b ramo_teste
## Obs.: O ramo provisório é removido assim que se
## fizer um checkout para qualquer outro ramo
``` ```
\routine{Reescrever mensagem de commit} <!-- ------------------------------------------- -->
\hlabel{routine8}
\routine{Reescreva commits}
```{r, engine='bash', echo=TRUE, eval=FALSE} ```{r, engine='bash', echo=TRUE, eval=FALSE}
## Verifica o histórico de versões do repositório
git log --oneline git log --oneline
git commit --amend "Correção de Commit"
git push -f origin master ## -------------------------------------------
## Reescreve a última mensagem de commit
git commit --amend -m "Correção de Commit"
## Obs1.: Arquivos na staging area também são
## incorporados ao último commit
## Obs2.: Reescreve a história do repositório, não
## é recomendável reescrever a linha do tempo quando
## se está em um projeto colaborativo remoto.
```
<!-- ------------------------------------------- -->
\hlabel{routine9}
\routine{Adicione chaves públicas}
```{r, engine='bash', echo=TRUE, eval=FALSE}
## Crie uma chave pública.
ssh-keygen -t rsa -C "namelastname@servidor"
## Exibe as chaves públicas.
cat ~/.ssh/id_rsa.pub
## Adicione o conteúdo a um servidor remoto, como:
## - git@github.com
## - git@gitlab.com
## - git@gitlab.c3sl.ufpr.br
## Verifica conexão com o servidor
ssh -T endereço ## endereço = git@github.com, ...
## Obs.: Todos os comandos ssh são provinientes do
## pacote de função ssh para shell, portanto para
## utilizar instale este pacote.
```
<!-- ------------------------------------------- -->
\hlabel{routine10}
\routine{Trabalhe remotamente}
```{r, engine='bash', echo=TRUE, eval=FALSE}
## Clona um projeto remoto:
## e.g. git@github.com:pet-estatistica/apostila-git.git
git clone endereço:namespace/project.git
## Realiza modificações e/ou inclusões de em um ou
## vários arquivos
## Adiciona todas as alterações para commit
git add .
## Registra suas alterações
git commit -a -m "Modifica compilação do projeto"
## Envia as alterações para o repositório remoto (origin)
git push origin
## Traz estado do repositório remoto
git pull origin
```
<!-- ------------------------------------------- -->
\hlabel{routine11}
\routine{Manipule ramos remotos}
```{r, engine='bash', echo=TRUE, eval=FALSE}
## -------------------------------------------
## Realizando contribuições em um ramo remoto
## Lista todos os ramos
git branch -a
## Altera versionamento para o ramo issue01
git checkout issue01
## Traz estado do ramo remoto issue01
git pull origin issue01
## Realiza modificações e/ou inclusões de em um ou
## vários arquivos
## Adiciona todas as alterações para commit
git add .
## Registra suas alterações
git commit -a -m "Modifica laço iterativo condicional"
## Envia as alterações no ramo para a versão remota
git push origin issue01
## -------------------------------------------
## Realizando contribuições em um ramo remoto e
## enviando o ramo principal mesclado
## Traz estado do ramo remoto issue01
git pull origin bugfix
## Altera versionamento para o ramo issue01
git checkout bugfix
## Realiza modificações e/ou inclusões de em um ou
## vários arquivos
## Adiciona todas as alterações para commit
git add .
## Registra suas alterações
git commit -a -m "Altera classe do objeto retornado"
## Retorna ao ramo principal
git checkout master
## Incorpora modificações realizadas no ramo bugfix
git merge bugfix
## Envia as alterações o repositório remoto
git push origin master
## Deleta o ramo local e remoto bugfix
git branch -d bugfix ## Local
git push :bugfix ## Remoto
```
<!-- \routine{Incorporar o remoto ao local} -->
<!-- ------------------------------------------- -->
\hlabel{routine12}
\routine{Adicione local remoto}
```{r, engine='bash', eval=FALSE, echo=TRUE}
## Lista os servidores remotos, com endereço
git remote -v
## -------------------------------------------
## Adicionando local para trazer contribuições
## Adiciona local remoto com nome gitlab:
git remote add gitlab git@gitlab.com:user/project.git
## Adiciona local remoto com nome github:
git remote add github git@github.com:user/project.git
## Atualiza arquivos locais, baseado no local remoto:
git pull gitlab ## gitlab.com:namespace/project.git
git pull github ## github.com:namespace/project.git
## -------------------------------------------
## Adicionando local para enviar contribuições
## Lista os locais de origem
git remote show origin
## Adiciona novo local de origem:
## e.g. git@github.com:pet-estatistica/apostila-git.git
git remote set-url origin --push --add endereço_remoto
## Envia as contribuições para os locais remotos
git push origin
``` ```
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment