Testar Arquivos Sem Conflito
Nas etapas anteriores, identificamos e examinamos um arquivo com um conflito de merge (message.txt). No entanto, durante um merge, pode haver também arquivos que foram alterados em ambas as branches, mas sem conflitos. O Git faz o merge desses arquivos automaticamente.
Nesta etapa, criaremos um novo arquivo em uma das branches e veremos como o Git o lida durante o processo de merge. Isso nos ajudará a entender que os conflitos ocorrem apenas quando as alterações se sobrepõem no mesmo arquivo.
Certifique-se de que você ainda está no diretório ~/project/my-time-machine e na branch master (onde o conflito de merge ocorreu).
Vamos criar um novo arquivo chamado notes.txt na branch master:
echo "Important notes for the project." > notes.txt
git add notes.txt
git commit -m "Add project notes"
Agora, vamos voltar para a branch feature/greeting:
git checkout feature/greeting
Nesta branch, o arquivo notes.txt ainda não existe. Vamos criar um arquivo diferente aqui, por exemplo, todo.txt:
echo "Things to do: finish the lab." > todo.txt
git add todo.txt
git commit -m "Add a todo list"
Agora, vamos voltar para a branch master e tentar o merge novamente. Mesmo que já tenhamos resolvido o conflito em message.txt, o processo de merge precisa ser concluído.
git checkout master
git merge feature/greeting
Desta vez, como já resolvemos o conflito em message.txt e o adicionamos à área de staging (embora não tenhamos mostrado explicitamente essa etapa após a edição, o Git geralmente adiciona o arquivo à área de staging após a resolução manual do conflito), o Git deve ser capaz de concluir o merge. Você pode ver uma saída indicando que o merge foi concluído.
Vamos verificar o status novamente:
git status
A saída agora deve mostrar que você está "On branch master" e que a working tree (árvore de trabalho) está limpa, o que significa que não há alterações pendentes ou caminhos não mesclados.
On branch master
nothing to commit, working tree clean
Agora, vamos verificar se os arquivos de ambas as branches estão presentes na branch master:
ls
Você deve ver message.txt, notes.txt (da branch master) e todo.txt (da branch feature/greeting) listados.
message.txt notes.txt todo.txt
Isso demonstra que o Git fez o merge com sucesso das alterações de feature/greeting, incluindo o novo arquivo todo.txt, sem quaisquer conflitos, porque todo.txt não existia na branch master. Os conflitos surgem apenas quando o mesmo arquivo tem alterações sobrepostas nas branches que estão sendo mescladas.
Entender como o Git lida com arquivos conflitantes e não conflitantes durante um merge é essencial para gerenciar o histórico do seu projeto de forma eficaz.