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
3f522677
Commit
3f522677
authored
9 years ago
by
Walmes Marques Zeviani
Browse files
Options
Downloads
Patches
Plain Diff
Corrige fluxo de trabalho.
parent
4531cbd7
No related branches found
No related tags found
1 merge request
!51
Issue#24
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
cap05.Rmd
+46
-51
46 additions, 51 deletions
cap05.Rmd
with
46 additions
and
51 deletions
cap05.Rmd
+
46
−
51
View file @
3f522677
...
@@ -585,36 +585,37 @@ descrever o procedimento de trabalho considerando tais interfaces.
...
@@ -585,36 +585,37 @@ descrever o procedimento de trabalho considerando tais interfaces.
TODO Deixar os chunks dessa sessão reproduzíveis! TODO
TODO Deixar os chunks dessa sessão reproduzíveis! TODO
O fluxo de trabalho de um projeto Git local e usando um servidor remoto
O fluxo de trabalho de um projeto Git local usando um servidor remoto
já foram apresentados. O fluxo com um repositório Git mantido em um
foram apresentados no capítulo anterior. O fluxo com um repositório Git
serviço, como o GitHub ou Gitlab, não muda muito. A maior diferença não
mantido em um serviço, como o GitHub ou Gitlab, não muda muito. A maior
é sobre o uso de novas instruções Git mas sim a adoção de uma estratégia
diferença não é sobre o uso de novas instruções Git mas sim a adoção de
de trabalho (*workflow*) baseada nos recursos desses serviços, como as
uma estratégia de trabalho (*workflow*) baseada nos recursos desses
*milestones* e *issues*. Esse modelos de trabalho seráo descritos em um
serviços, como as *milestones* e *issues*. Esse modelos de trabalho
capítulo à frente.
serão descritos em um capítulo à frente.
Em termos de comandos, acrescenta-se aqueles necessários para se
O fluxo de trabalho com repositórios remotos, em termos de comandos,
comunicar com um repositório remoto. Alguns desses comandos, senão
acrescenta àqueles necessários para se comunicar com o
todos, já foram apresentados no capítulo anterior a esse.
repositório. Alguns desses comandos, senão todos, já foram apresentados
no capítulo anterior a esse.
Ao considerar um seviço web, você pode começar um repositório novo de
Ao considerar um seviço web, você pode começar um repositório novo de
duas formas: localmente ou pelo serviço.
duas formas: localmente ou pelo serviço.
Pelo serviço, qualquer que seja, crie um novo repositório. GitHub e
Pelo serviço, qualquer que seja, crie um novo repositório. GitHub e
GitLab dão instruções resumidas de como proceder logo que você cria um
GitLab dão instruções resumidas de como proceder logo que você cria um
novo repositório
,
inclusive, incluem opções como criar um
repositório
novo repositório
. Eles
inclusive, incluem opções como criar um
com arquivo de `README`. Assim que criar, seu repositório
terá um
repositório
com arquivo de `README`. Assim que criar, seu repositório
endereço (
ssh e http
). Na sessão anterior,
**Gerenciar
re
p
os
itórios**,
terá um
endereço (
SSH e HTTP
). Na sessão anterior,
desc
re
m
os
o processo
descremos o processo
de criar e *clonar* o repositório e também de criar
de criar e *clonar* o repositório e também de criar
local e adicionar a
local e adicionar um endeço d
o `origin`.
*url* do repositório remot
o
(
`origin`
)
.
Localmente o repositório segue o ciclo normal de desenvolvimento que
Localmente o repositório segue o ciclo normal de desenvolvimento que
minimamente contém das intruções `git add` e `git commit`. Os fluxos de
minimamente contém das intruções `git add` e `git commit`. Os fluxos de
trabalho em geral preconizam o desenvolvimento a partir de *branches*
de
trabalho
,
em geral
,
preconizam o desenvolvimento a partir de *branches*
demanda cujo conteúdo será incorporado aos ramos permanentes
(`master`,
de
demanda cujo conteúdo será incorporado aos ramos permanentes
`devel`) quando forem concluídos. Abaixo ilustramos a
sequência de criar
(`master`,
`devel`) quando forem concluídos. Abaixo ilustramos a
um ramo, desenvolvê-lo e por fim subir o seu conteúdo
para o repositório
sequência de criar
um ramo, desenvolvê-lo e por fim subir o seu conteúdo
remoto, que nesse caso é mantido em um servido web.
para o repositório
remoto, que nesse caso é mantido em um servido web.
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
## Cria um ramo chamado issue#10.
## Cria um ramo chamado issue#10.
...
@@ -631,7 +632,7 @@ git commit -m <mensagem>
...
@@ -631,7 +632,7 @@ git commit -m <mensagem>
git push origin issue#10
git push origin issue#10
```
```
Nessa rotina, consideramos `issue#10` um *issue* criado na interface
Nessa rotina, consideramos `issue#10` um *issue* criado na interface
web
para atender uma demanda, como por exemplo, corrigir um *bug*. Da mesma
para atender uma demanda, como por exemplo, corrigir um *bug*. Da mesma
forma que o ramo default do Git é o `master`, o repositório remoto é por
forma que o ramo default do Git é o `master`, o repositório remoto é por
default chamado de `origin`, então subimos o conteúdo desse ramo para o
default chamado de `origin`, então subimos o conteúdo desse ramo para o
...
@@ -641,8 +642,8 @@ Não há limites para o número de ramos. Ramos podem ser locais, remotos
...
@@ -641,8 +642,8 @@ Não há limites para o número de ramos. Ramos podem ser locais, remotos
ou ambos. Quando você cria um ramo, como nos comandos acima, ele é um
ou ambos. Quando você cria um ramo, como nos comandos acima, ele é um
ramo remoto. Quando você sobre esse ramo, ele passa ter sua parte remota
ramo remoto. Quando você sobre esse ramo, ele passa ter sua parte remota
também. E quando você clona um repositório, você traz todos os ramos que
também. E quando você clona um repositório, você traz todos os ramos que
ele possui, que são ramos remotos. Ao escolher um ramo
s
desse para
ele possui, que são ramos remotos. Ao escolher um ramo desse para
trabalhar, ele passa
r
ser também um ramo local. Abaixo formas de lista
s
trabalhar, ele passa
a
ser também um ramo local. Abaixo formas de lista
r
os ramos do projeto.
os ramos do projeto.
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
...
@@ -673,7 +674,7 @@ git push origin --delete issue#10
...
@@ -673,7 +674,7 @@ git push origin --delete issue#10
git push origin :issue#10
git push origin :issue#10
```
```
Até aqui
,
nos referimos ao repositório remoto como `origin` que é o nome
Até aqui nos referimos ao repositório remoto como `origin` que é o nome
default. No entanto, um projeto Git pode ter mais de um repositório
default. No entanto, um projeto Git pode ter mais de um repositório
remoto. Considere o caso simples de um repositório para arquivos de uma
remoto. Considere o caso simples de um repositório para arquivos de uma
disciplina. Esse repositório contém tanto lista de exercícios para os
disciplina. Esse repositório contém tanto lista de exercícios para os
...
@@ -714,11 +715,11 @@ sempre precisar atualizar os repositórios com o conteúdo existente no
...
@@ -714,11 +715,11 @@ sempre precisar atualizar os repositórios com o conteúdo existente no
remoto. Existem duas instruções Git para isso: `git fetch` e `git pull`.
remoto. Existem duas instruções Git para isso: `git fetch` e `git pull`.
As duas traduções mais frequentes do verbo *to fetch* são buscar e
As duas traduções mais frequentes do verbo *to fetch* são buscar e
trazer. A documentação oficial do comando `git
fetch`
trazer. A documentação oficial do comando `git
(<
https://git-scm.com/docs/git-fetch
>)
indica que
esse comando serve
fetch`\footnote{\url{
https://git-scm.com/docs/git-fetch
}}
indica que
para trazer objetos e referências dos repositórios
remotos. Abaixo o
esse comando serve
para trazer objetos e referências dos repositórios
comando padrão considerando um remoto de nome `origin`
e algumas
remotos. Abaixo o
comando padrão considerando um remoto de nome `origin`
variações.
e algumas
variações.
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
## Traz todos os ramos do remoto origin.
## Traz todos os ramos do remoto origin.
...
@@ -735,8 +736,8 @@ O comando *fetch* traz os ramos e atualiza a parte remota, por exemplo,
...
@@ -735,8 +736,8 @@ O comando *fetch* traz os ramos e atualiza a parte remota, por exemplo,
o `origin/devel`. O ramo local `devel` não tem seu conteúdo modificado
o `origin/devel`. O ramo local `devel` não tem seu conteúdo modificado
após o `fetch`. Para transferir o conteúdo o `origin/devel` para o
após o `fetch`. Para transferir o conteúdo o `origin/devel` para o
`devel` tem-se que usar o `git merge`. No entanto, sempre que haver
`devel` tem-se que usar o `git merge`. No entanto, sempre que haver
necessidade, antes o *merge* pode-se verificar as diferenças que
existem
necessidade, antes
d
o *merge* pode-se verificar as diferenças que
entre local e remoto, principalmente quando esse remoto traz
existem
entre local e remoto, principalmente quando esse remoto traz
contribuições de algum colaborador. Os comandos abaixos exibem as
contribuições de algum colaborador. Os comandos abaixos exibem as
diferenças entre os ramos e aplicam o merge entre eles.
diferenças entre os ramos e aplicam o merge entre eles.
...
@@ -751,32 +752,28 @@ git diff devel origin/devel
...
@@ -751,32 +752,28 @@ git diff devel origin/devel
git merge origin/devel
git merge origin/devel
```
```
Como você já sabe, os merges podem apresentar conflito. Já vimos como
fazer isso e no capítulo a seguir apresentaremos interfaces gráficas
para trabalhar com o Git e dentre elas algumas são para auxiliar a
resolvê-los.
Em resumo, para passar o conteúdo de um ramo remoto para um local temos
Em resumo, para passar o conteúdo de um ramo remoto para um local temos
que fazer `git fetch` e em seguida `git merge`. O comando `git pull` são
que fazer `git fetch` e em seguida `git merge`. O comando `git pull` são
esses dois em um. A documentação do `git
pull`
esses dois em um. A documentação do `git
(<
https://git-scm.com/docs/git-pull
>)
dá uma descrição
detalhada do seu
pull`\footnote{\url{
https://git-scm.com/docs/git-pull
}}
dá uma descrição
uso enquanto que os exemplos abaixo ilustram o uso mais
simples
detalhada do seu
uso enquanto que os exemplos abaixo ilustram o uso mais
possível.
simples
possível.
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
## Traz e junta todos os ramos do remoto
origin para
os locais.
## Traz e junta todos os ramos do remoto
com
os locais.
git pull origin
git pull origin
## Traz e ju
s
ta só do ramo devel.
## Traz e ju
n
ta só do ramo devel.
git pull origin devel
git pull origin devel
```
```
Por fim, para subir o trabalho feito em um ramo, usa-se a intrução `git
Por fim, para subir o trabalho feito em um ramo, usa-se a intrução `git
push`. Enviar o seu trabalho com frequência é a melhor forma de ter
push`. Enviar o seu trabalho com frequência é a melhor forma de ter
*backups*, exibir e disponibilizar suas contribuições para os seus
*backups*, exibir e disponibilizar suas contribuições para os seus
colaboradores. A documentação do `git push` é rica em variações
colaboradores. A documentação do `git
(<https://git-scm.com/docs/git-push>) mas a maneira mais simples de
push`\footnote{\url{https://git-scm.com/docs/git-push}} é rica em
usá-lo é para subir um ramo para o repositório remoto.
variações mas a maneira mais simples de usá-lo é para subir um ramo para
o repositório remoto.
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
## Sobe o ramo issue#10 para o repositório remoto origin.
## Sobe o ramo issue#10 para o repositório remoto origin.
...
@@ -789,11 +786,9 @@ git push --all origin
...
@@ -789,11 +786,9 @@ git push --all origin
Quando você sobe pela primeira vez um ramo local, a sua parte remota é
Quando você sobe pela primeira vez um ramo local, a sua parte remota é
criada. Assim, a instrução que colocamos acima criou um ramo remoto
criada. Assim, a instrução que colocamos acima criou um ramo remoto
chamado `origin/issue#10`. Essa é a forma mais natural, e até
chamado `origin/issue#10`. Essa é a forma mais natural, e até
despercebida, de criar ...
despercebida, de criar ramos locais com cópias remotas. Outras maneiras
existem. Abaixo fazemos a criação do remoto a partir do local sem ser
Outras maneiras existem. Abaixo fazemos a criação do remoto a partir do
usando o *push*. Esses comandos precisam ser usados uma vez apenas.
local sem ser usando o *push*. Esses comandos precisam ser usados uma
vez apenas.
```{r, engine="bash", eval=FALSE}
```{r, engine="bash", eval=FALSE}
## Duas formas de conectar o local e remoto.
## Duas formas de conectar o local e remoto.
...
...
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