Exercício – intercalar a ramificação de Bob
Enquanto Alice está trabalhando em CSS para o site, Bob está trabalhando em casa, felizmente sem saber do trabalho que Alice está fazendo. Não há problema, porque ambos estão a utilizar ramificações! Bob decide fazer algumas alterações por conta própria.
Criar uma ramificação para Bob
Retorne ao diretório Bob e execute o seguinte comando para criar uma ramificação chamada
add-cat
. Use a opção popularcheckout -b
para criar a ramificação e alternar para ela em um único comando.cd ../Bob git checkout -b add-cat
Baixe o arquivo zip que contém alguns recursos do site. Em seguida, 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 Bob's Assets. 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
Em seguida, abra o arquivo index.html e substitua a linha que diz "Eventualmente vamos colocar fotos de gatos aqui" pela seguinte linha:
<img src="Assets/bobcat2-317x240.jpg" />
Salve o arquivo e feche o editor.
Você fez duas alterações na ramificação do
add-cat
Bob — adicionou um arquivo e modificou outro. Executegit status
para verificar novamente as alterações:git status
Em seguida, execute os seguintes comandos para adicionar o novo arquivo no diretório Assets ao índice e confirmar todas as alterações:
git add . git commit -a -m "Add picture of Bob's cat"
Bob agora faz a mesma ação que Alice fez anteriormente. Bob muda de volta para a
main
ramificação e executa um pull para ver se algo mudou:git checkout main git pull
Verifique a saída. Desta vez, a saída indica que foram feitas alterações na
main
ramificação no repositório compartilhado (o resultado do push de Alice). Também indica que as alterações extraídas domain
repositório compartilhado foram mescladas commain
o repositório do Bob's: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(-)
Em seguida, Bob funde seu ramo no
main
ramo para quemain
em seu repositório tenha suas mudanças e as mudanças de Alice. Em seguida, Bob empurramain
o computador para amain
ramificação no repositório compartilhado:git merge add-cat --no-edit git push
Bob não usou a --ff-only
bandeira porque eles sabiam que main
tinha mudado. Uma fusão apenas de avanço rápido teria falhado.
Sincronizar os repositórios
Nesta altura, Bob tem um repositório atualizado, mas Alice não. Alice precisa fazer um git pull
repositório compartilhado para se certificar de que eles têm a versão mais recente e melhor 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 o repositório de Bob estão sincronizados. Cada um dos repositórios deve ter um arquivo JPG no diretório Assets e um <img>
elemento declarado no arquivo index.html. O arquivo site.css na pasta Assets de cada repositório deve conter uma linha que define um estilo CSS chamado cat. Este estilo foi adicionado por Alice quando eles fizeram suas alterações.
Se você abrir index.html em um navegador, verá esta imagem:
Na próxima lição, você aprenderá como resolver conflitos de mesclagem, que ocorrem quando as alterações feitas por dois ou mais desenvolvedores se sobrepõem.