Versionamento
Depois de instalar o Git, você praticou os comandos básicos, como publicar no repositório remoto e ignorar arquivos.
Nesta etapa, para desenvolver o desafio 3, você deverá:
Para isso, você estudará os seguintes conteúdos:
Um dos pontos importantes do Git é a sua flexibilidade de trabalho, seja para realizar um trabalho individual, em equipes pequenas ou grandes. Por meio do versionamento e rastreamento, é possível trabalharmos de maneira paralela em tarefas distintas e entregarmos itens de modo mais rápido durante o processo. Para trabalhar várias tarefas e trechos de códigos simultaneamente, usamos branch e trunk.
Clique no player a seguir e assista ao vídeo que explica o que são trunk e branch.
No primeiro e no segundo desafio, todas as alterações estavam sendo feitas no mesmo ramo de trabalho. Agora, depois de conhecer os termos trunk e branch, você conhecerá mais a fundo o que acontece quando vários programadores editam o mesmo arquivo.
Considerando um determinado ponto do código-fonte, nós podemos criar uma cópia desse trabalho e atuarmos nas tarefas de maneira paralela.
No desafio 2, você criou uma pasta chamada senai-versoes-colaboracoes. Nessa pasta, o repositório foi criado e todo o versionamento de código foi feito.
Para darmos continuidade ao nosso processo, devemos garantir que todas as informações estão atualizadas com o repositório remoto. Para isso, podemos usar dois comandos:
git pull
: para baixar as atualizações do repositório remoto; ougit clone
: para clonar a pasta do repositório remoto.git pull
: para baixar as atualizações do repositório remotoVocê já praticou esse comando antes, basta repetir os mesmos passos.
git clone
: para clonar a pasta do repositório remotoCaso você não tenha o repositório/pasta em seu computador, você pode clonar (copiar) o conteúdo do repositório remoto em sua máquina local.
Clique nas abas de navegação para ver o passo a passo da clonagem.
● Acesse o repositório remoto através do link "github.com/seu-usuário". No nosso exemplo, o link é "http://github.com/
hstrada".
Clique em "repositories".
● Em sua pasta local .git, abra o Git bash, clicando com o botão direito do mouse.
No terminal, digite o comando git clone
"https://github.com/hstrada/senai-versoes-colaboracoes.git"
Com o repositório atualizado e com as informações do tronco principal também atualizadas, inicie a criação do primeiro ramo de trabalho.
Considerando um determinado ponto do código-fonte, nós podemos criar uma cópia desse trabalho e atuarmos nas tarefas de maneira paralela.
Para isso, os passos serão:
git checkout -b tarefa/minha-primeira-branch
;git checkout -b tarefa/minha-primeira-branch
: criar uma branchPara realizar esta ação, dentro do repositório local senai-versoes-colaboracoes, digite o comando git checkout -b tarefa/minha-primeira-branch
no terminal.
O parâmetro "–b
" é utilizado para informar que desejamos criar uma branch e que esse ramo ainda não existe.
O esquema a seguir resume a criação da nova branch.
Importante
A partir deste momento, todas as alterações realizadas estarão na branch, ou seja, no ramo criado, e não mais no tronco (trunk) principal e não impactarão diretamente no ponto principal do nosso código-fonte.
Estamos na branch criada. Isso significa que as alterações feitas irão acontecer nesse ramo. Vamos praticar alterando o arquivo README.md e depois verificando no repositório remoto.
Clique nas abas de navegação para acompanhar como alterar o arquivo "README.md".
● Na pasta senai-versoes-colaboracoes, abra o README.md com o bloco de notas. Adicione o comentário: "lembrei do comando: git status" e salve-o.
● Agora abra o terminal do Git Bash, clicando com o botão direito dentro da pasta "senai-versoes-colaboracoes".
Veja a alteração com o git status
, adicione esse arquivo na área de staging com git add .
e faça o commit com o git commit –m "comentário"
.
Agora vamos verificar no repositório remoto a alteração. Você vai perceber que as alterações no ramo principal de trabalho, que mantém nosso código-fonte, não foram alteradas.
Clique nas setas de navegação para ver o procedimento.
Importante
Nenhuma alteração feita na branch criada impactou diretamente a base do projeto (a master).
Dentro de um projeto, para cada tarefa, geralmente é criada uma branch. Assim, o andamento de cada tarefa não impacta o desenvolvimento do ramo principal nem outros arquivo da equipe.
Como há outras pessoas na equipe trabalhando com o mesmo código-fonte da master, há a necessidade de criar uma branch para cada tarefa. Assim, cada um pode adicionar suas informações no mesmo arquivo sem afetar o desenvolvimento das tarefas de outros colegas.
Novas branchs também devem ser criadas, caso você queira testar duas soluções diferentes para a mesma tarefa ou caso você tenha mais de uma tarefa para solucionar.
Para criar novas branchs, vamos:
git checkout master
;git checkout -b exemplo-branch
;git checkout master
O primeiro passo para criar uma nova branch é voltar para a master com o comando git checkout master
.
Dica
O comando para criar uma nova branch é git checkout –b “nome da branch”
, lembra-se? E o parâmetro –b
indica a criação de uma nova branch.
Quando voltamos para a trunk (chamada master), usamos também o comando git checkout
, mas não é necessário informar o parâmetro –b
, pois a trunk já existe.
git checkout -b exemplo-branch
Vamos retomar o comando para criar uma nova branch, mudando apenas o nome. Portanto, o comando que devemos digitar no terminal é git checkout –b exemplo-branch
.
Agora estamos na branch exemplo-branch e, portanto, as alterações feitas aqui não afetarão nem a master nem a tarefa/minha-primeira-branch.
Clique nas abas de navegação para ver como alterar o arquivo "README.md" nesta branch.
● Abra o arquivo "README.md".
Note que as alterações feitas na branch tarefa não estão presentes aqui, pois criamos a branch exemplo a partir da master. As alterações da branch tarefa não afetam a master.
● Abra o terminal do Git Bash (botão direito dentro da pasta) e execute:
● git add .
(adiciona ao staging);
● git commit –m
"adicionando o comando git commit" (salva no histórico);
● git push origin exemplo-branch
(envia para o repositório remoto).
Acesse o repositório remoto no seu navegador, com o link "https://github.com/seu-usuário/repositorio-remoto" (no nosso exemplo "https://github.com/hstrada/senai-versoes-colaboracoes").
Você criou duas branchs com dois conteúdos distintos, pois cada uma tem uma atualização diferente do mesmo arquivo. O Git fornece recursos para unificação desse trabalho.
Agora estamos na branch exemplo e vamos unificar o conteúdo com o da branch tarefa em um mesmo ramo de trabalho.
Você pode realizar esta ação por meio de dois comandos distintos:
git pull origin tarefa/minha-primeira-branch
; ougit merge tarefa/minha-primeira-branch
.Pense nisso...
Lembre-se que fizemos alterações no mesmo arquivo em cada branch. O que vai ocorrer?
Imagine que, como você, os outros membros da equipe estão desenvolvendo suas tarefas em suas respectivas branchs. Em algum momento, todos os ramos serão unificados para que o trabalho possa ser entregue em um único arquivo. Como ajustar os conflitos nessa unificação?
No nosso exemplo, ajustamos o mesmo ponto do arquivo em duas branchs separadas e o Git nos informa que existe um conflito entre as alterações.
O que é necessário ser feito é informar qual das atualizações nós desejamos manter em nosso arquivo.
Existem três maneiras básicas de resolver:
Nesse exemplo, vamos optar pela terceira maneira.
Clique nas setas de navegação para ver como corrigir o conflito.
● Abra o terminal no seu repositório local e:
» adicione o arquivo para a área de preparo;
» faça o commit; e
» publique no repositório remoto.
DICA
É possível criar uma nova branch a partir de outra branch, basta não voltar para a trunk ao criar um novo ramo. Porém, devemos ter atenção extra para fazer o merge em ramificações distantes da trunk.
SAIBA MAIS...
Existem algumas ferramentas que podem nos auxiliar na visualização de conflitos, como o Git GUI com o meld. Para saber mais, clique aqui e continue a pesquisar e estudar.
Quando desenvolvemos projetos maiores e adicionamos novas tarefas, podemos demarcar pontos no decorrer do desenvolvimento do código que representa, por exemplo, a inclusão de uma tarefa ou um item crucial que foi resolvido.
Essa marcação é chamada de tag e é importante para delimitar pontos estratégicos, como commits que formam o contexto na nossa aplicação.
Importante
Ao demarcar um ponto com uma tag na master, por exemplo, todo o código-fonte até ali é automaticamente compactado num arquivo dentro daquela tag. Se a tag for criada em uma branch, o código compactado será da branch, desde a sua criação até o ponto demarcado pela tag.
Para exemplificar, vamos criar uma tag na master no ponto atual, pelo terminal em seu repositório local.
Clique nas abas de navegação para acompanhar o passo a passo.
● No terminal do seu repositório local, crie uma tag para marcar o ponto atual com o comando git tag –a v1.0 –m "minha primeira tag"
.
● Vamos "empurrar", ou seja, publicar as tags no repositório remoto com o comando git push origin --tags
.
● Agora acesse o repositório remoto pelo seu navegador. No github, encontre a tag criada e publicada.
● Clique em releases para ter acesso às informações que foram adicionadas a esse ponto atual de nosso código.
Importante
Como comentamos sobre as tarefas desenvolvidas em todos os commits até a tag criada de identificação, os arquivos compactados são entregas/lançamentos parciais que irão compor o nosso projeto ao longo do tempo.
1. Selecione a alternativa correta. Qual o nome do tronco principal em que é mantido nosso código-fonte?
Atenção
Selecione uma alternativa.
Parabéns! Resposta correta.
O tronco principal que contém nosso código-fonte é chamado de trunk ou master.
Ops! Tente novamente.
Retorne ao conteúdo e veja o vídeo em Trabalho de Equipe.
Ops! Resposta incorreta.
O tronco principal que contém nosso código-fonte é chamado de trunk ou master.
2. Assinale verdadeiro ou falso. O tronco paralelo em que podemos atuar de maneira complementar pode ser chamado de:
Verdadeiro
Falso
Verdadeiro
Falso
Verdadeiro
Falso
Verdadeiro
Falso
3. Associe corretamente a ação ao respectivo comando.
a. Retorna ao tronco principal. | |
b. Cria uma nova branch. | |
c. Publica a branch no repositório remoto. | |
d. Mescla a branch atual com a branch referida. |
4. Selecione a alternativa correta. Qual o comando utilizado para criar uma tag?
Atenção
Selecione uma alternativa.
Parabéns! Resposta correta.
O comando utilizado para criar uma tag é o git tag -a <nome da tag> -m <comentário>
.
Ops! Tente novamente.
Retorne ao conteúdo e veja o vídeo em Trabalho de Equipe.
Ops! Resposta incorreta.
O comando utilizado para criar uma tag é o git tag -a <nome da tag> -m <comentário>
.
Você conheceu melhor os termos trunk e branch. Estudou como criar novas branchs e como unificá-las quando necessário, além de praticar a criação de tags.
Os desenvolvimentos colaborativo e paralelo são itens muito importantes durante a sua carreira como programador, permitindo-lhe atuar em diferentes tarefas, aumentar a capacidade de entrega, formalizar o processo de desenvolvimento, além de centralizar as informações que são necessárias no projeto.
Durante seus estudos, você percebeu que salvar o progresso do seu trabalho em versões do seu arquivo é muito importante e que fazer o controle manual dessas versões pode ser impossível. Portanto, um sistema de controle de versionamento é essencial para o desenvolvimento de seu trabalho e da sua equipe.
Dentre os diversos sistemas de controle de versionamento e plataformas de publicação online, foram escolhidos o Git (chamado de Git Bash, na versão para os sistemas operacionais Windows) e o GitHub. Baseado nessas escolhas, você conheceu e praticou comandos básicos, como salvar e publicar alterações, além de criar branchs e tags. Estudou também como unificar branchs e resolver conflitos na mesclagem.
Continue estudando e praticando, sempre!
Bom trabalho e até breve!
Aviso
Parece que você já iniciou o curso, você pode: