Exercício – Mesclar branch de Bob
Enquanto Alice está trabalhando em CSS para o site, Bob está trabalhando em casa, tranquilamente, sem saber o que Alice está fazendo. Essa organização é ótima, porque todos eles estão usando branches! Bob decide fazer algumas alterações por conta própria.
Criar um branch para Bob
Retorne ao diretório Bob e execute o comando a seguir para criar um branch chamado
add-cat
. Use a opçãocheckout -b
popular para criar o branch e alternar para um único comando.cd ../Bob git checkout -b add-cat
Baixe o arquivo zip que contém alguns recursos do site. Descompacte os arquivos de recurso:
wget https://github.com/MicrosoftDocs/mslearn-branch-merge-git/raw/main/git-resources.zip unzip git-resources.zip
Agora, mova o arquivo bobcat2-317x240.jpg para o diretório Ativos de Bob. Exclua os outros arquivos. Você baixará os arquivos e os usará novamente mais tarde.
mv bobcat2-317x240.jpg Assets/bobcat2-317x240.jpg rm git-resources.zip rm bombay-cat-180x240.jpg
Abra o arquivo index.html e substitua a linha que diz "Eventualmente, colocaremos as imagens de gato aqui" pela seguinte linha:
<img src="Assets/bobcat2-317x240.jpg" />
Salve o arquivo e feche o editor.
Você fez duas alterações no branch
add-cat
de Bob – adicionou um arquivo e modificou outro. Executegit status
para verificar as alterações mais uma vez:git status
Execute os seguintes comandos para adicionar o novo arquivo no diretório Ativos para o índice e confirmar todas as alterações:
git add . git commit -a -m "Add picture of Bob's cat"
Bob agora executa a mesma ação que Alice realizou anteriormente. Bob retorna para o branch
main
e executa um pull para ver se algo foi alterado:git checkout main git pull
Verifique a saída. Desta vez, a saída indica que alterações foram feitas no branch
main
no repositório compartilhado (o resultado do push de Alice). Também indica que as alterações extraídas demain
no repositório compartilhado foram mescladas commain
no repositório de Bob:remote: Counting objects: 4, done. remote: Compressing objects: 100% (3/3), done. remote: Total 4 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. From D:/Labs/Git/Bob/../Shared e81ae09..1d2bfea main -> origin/main Updating e81ae09..1d2bfea Fast-forward Assets/site.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Bob mescla seu branch no branch
main
para quemain
no repositório tenha as alterações dele e as alterações de Alice. Bob efetua push demain
em seu computador para o branchmain
no repositório compartilhado:git merge add-cat --no-edit git push
Bob não usou o sinalizador --ff-only
porque sabia que main
tinha mudado. Uma mesclagem somente de avanço rápido teria falhado.
Sincronizar o repositórios
Neste ponto, Bob tem um repositório atualizado, mas Alice não. Alice precisa fazer um git pull
do repositório compartilhado para garantir que ela tenha a melhor e mais recente versão do site.
Execute os seguintes comandos para sincronizar o repositório de Alice com o repositório compartilhado:
cd ../Alice
git pull
Reserve um tempo para verificar se o repositório de Alice e de Bob estão sincronizados. Cada repos deve ter um arquivo JPG no diretório Ativos e um elemento <img>
declarado no arquivo index.html. O arquivo site.css na pasta Ativos de cada repositório deve conter uma linha que define um estilo CSS chamado gato. Esse estilo foi adicionado por Alice quando ela fez suas alterações.
Se você abrir index.html em um navegador, verá a seguinte imagem:
Na próxima lição, você aprenderá a resolver os conflitos de mesclagem, que ocorrem quando as alterações feitas por dois ou mais desenvolvedores se sobrepõem.