Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
apostila-git
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
pet-estatistica
apostila-git
Commits
eb295487
Commit
eb295487
authored
9 years ago
by
Eduardo E. R. Junior
Browse files
Options
Downloads
Patches
Plain Diff
Inclui novas rotinas e detalha comentários nas existentes
parent
d01ef19a
No related branches found
No related tags found
1 merge request
!54
Issue#65
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
cap08/cap08_er.Rmd
+356
-57
356 additions, 57 deletions
cap08/cap08_er.Rmd
cap08/cap08_er.pdf
+0
-0
0 additions, 0 deletions
cap08/cap08_er.pdf
with
356 additions
and
57 deletions
cap08/cap08_er.Rmd
+
356
−
57
View file @
eb295487
---
---
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 comm
it
:
#
#
Inicia o versionamento G
it
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', e
val=FALSE, echo=TRU
E}
```{r, engine='bash', e
cho=TRUE, eval=FALS
E}
## 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
```
```
This diff is collapsed.
Click to expand it.
cap08/cap08_er.pdf
0 → 100644
+
0
−
0
View file @
eb295487
File added
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment