Introdução
O Fieldnotes organiza pequenas oficinas e passeios pelo jardim. Uma atualização publicada pausou acidentalmente as inscrições de Clay & Coffee. Uma atualização posterior e válida adicionou Sunset Walk. A equipe quer restaurar as inscrições, mantendo esse evento mais recente e todas as reservas existentes.
Primeiro, você usará uma oficina que funciona corretamente para conhecer o processo normal de reserva e entrega do ingresso. Depois, inspecionará o histórico real do Git, desfará a alteração antiga com problema por meio de um novo commit de correção, publicará esse commit e testará uma reserva real. Voltar o site inteiro a uma versão anterior perderia trabalho útil.
Você deve compreender navegação básica no terminal, commits, branches e um log/diff simples; o curso anterior sobre merge em equipe é recomendado. As abas preparadas Workspace e Event Desk são os únicos pontos de acesso necessários. São repositórios Git reais e uma aplicação HTTP em uma única máquina de treinamento. Neste cenário, o site lê a main compartilhada diretamente; não se ensina um pipeline de implantação hospedado. Todas as identidades e todos os eventos são fictícios. A duração de 45 minutos é uma estimativa do autor.
Experimente o Site e Localize a Atualização com Problema
Nesta etapa, experimente uma reserva normal, observe a oficina com problema e identifique quais entradas do histórico representam a falha e o trabalho posterior que vale a pena preservar.
Abra a aba Event Desk. Na lista de oficinas, encontre Postcard Studio e clique em seu link View workshop. Esta oficina que funciona corretamente mostra Save your seat, o campo Full name e Reserve a place. Digite Alex Morgan, ou outro nome de exemplo, e clique em Reserve a place uma vez.
A confirmação deve dizer You're on the list. e mostrar Postcard Studio, Studio Two e EUR 10.00. Clique em Download ticket. Use a lista de Downloads do navegador para abrir o arquivo .txt. Ele deve conter a mesma oficina, o mesmo nome, o mesmo ponto de encontro e o mesmo total. A referência da reserva é gerada para sua reserva real e varia. Esse é o resultado útil normal que a oficina afetada também deve oferecer.
Clique em All workshops no cabeçalho da página. Abra Clay & Coffee pelo link View workshop. O problema inicial esperado é Registration is paused, sem formulário de reserva. As reservas existentes continuam válidas; não as remova para corrigir uma configuração de inscrição.
Use All workshops no cabeçalho novamente e abra Sunset Walk. Ele deve continuar disponível com 15 Nov 2026, 16:00, East Gate e EUR 6.00. A página posterior é um trabalho válido a preservar e não faz parte da falha.
Mude para a aba Workspace. Comece no repositório de edição:
cd /home/labex/project/event-desk/editor
cd altera o diretório deste terminal. Se digitar um caminho incorretamente, use pwd para exibir o diretório atual e ls para listar seu conteúdo; depois, repita o comando cd completo acima. Erros comuns de navegação não exigem restaurar a VM ao estado inicial.
Configure uma identidade de autor apenas neste repositório. --local mantém as configurações locais; as aspas mantêm um nome com espaços como um único valor. Estes são valores fictícios de exemplo, e você pode escolher os seus:
git config --local user.name "Event Editor"
git config --local user.email "events@example.com"
A aplicação mantém as reservas fora do repositório de edição. Seu arquivo JSON usa nomes de campos entre aspas seguidos de dois-pontos e valores; nomes e identificadores de oficinas são texto, enquanto os preços são armazenados como centavos inteiros. .. significa o diretório pai, portanto o comando somente de leitura a seguir exibe o arquivo de reservas no diretório vizinho sem sair do seu diretório de edição:
cat ../bookings.json
Encontre os registros originais de Casey Lane e Sam Rivera, além da sua nova reserva em Postcard Studio. Mantenha esses registros inalterados. O Git corrigirá uma configuração de evento versionada; ele não voltará a coleção de reservas a um estado anterior.
Leia o histórico de commits. --no-pager exibe a saída diretamente em vez de abrir um visualizador com rolagem; --oneline fornece uma linha curta por commit; --decorate identifica ponteiros de branch e tags:
git --no-pager log --oneline --decorate
A entrada mais recente é Add the Sunset Walk event, seguida por Pause Clay and Coffee registrations e Open the Fieldnotes event desk. Os IDs exatos dos commits variam. A tag preparada incident-start é uma referência fixa para a versão que você recebeu. Ao contrário de main, ela não se moverá quando você criar um novo commit. Mantenha essa referência inalterada.
Leia o que o commit mais recente marcado por essa referência alterou. show exibe a mensagem e o patch de um commit selecionado:
git --no-pager show incident-start
Ele adiciona events/sunset-walk.json. Esse é o novo evento a preservar. A pausa anterior, e não essa adição, é a alteração que você precisa desfazer. O ponto de verificação confirma sua nova reserva real de referência e o ingresso, em vez de considerar uma reserva de exemplo existente como seu novo resultado.
Adicione uma Correção sem Perder o Trabalho Posterior
Nesta etapa, identifique a alteração com problema e inverta apenas essa alteração em um novo commit após a ponta do histórico recebido.
Permaneça em Workspace, em /home/labex/project/event-desk/editor. Uma expressão de revisão pode identificar um ancestral sem colocá-lo na cópia de trabalho nem mover uma branch. incident-start~1 significa um pai antes da referência fixa; incident-start~2 significa dois pais antes dela. Leia o commit intermediário:
git --no-pager show incident-start~1
Seu patch altera registration_open de true para false em events/clay-and-coffee.json. Essa configuração booleana permite ou pausa novas inscrições. capacity é o limite positivo de vagas da oficina; ele também deve permanecer utilizável. O valor inalterado 1800 de price_cents significa EUR 18.00.
Leia o snapshot original do evento. Dois-pontos unem uma revisão e um caminho de arquivo, portanto a expressão a seguir seleciona o arquivo de dois pais antes da referência:
git --no-pager show incident-start~2:events/clay-and-coffee.json
O original tem inscrições abertas e capacidade 12. Restaurar o site inteiro para essa versão antiga também removeria Sunset Walk. Um revert, por sua vez, calcula o inverso da alteração de um commit escolhido e registra uma nova correção na branch atual. O commit original com problema permanece no histórico, assim como os commits úteis posteriores.
Confira o estado de trabalho antes da correção. --short fornece uma lista compacta dos arquivos alterados; o repositório preparado não deve produzir saída:
git status --short
Agora faça o revert do commit com problema identificado. --no-edit aceita a mensagem de correção gerada pelo Git e evita abrir um editor. A referência fixa mantém esse alvo estável mesmo depois que sua branch avança:
git revert --no-edit incident-start~1
Espere um novo commit que começa com Revert "Pause Clay and Coffee registrations" e a alteração de um arquivo. Sua identidade de autor e o ID do commit podem ser diferentes.
Pratique reconhecer uma operação já concluída executando o mesmo comando com a referência fixa mais uma vez. Espera-se que esta repetição retorne um status diferente de zero com nothing to commit, working tree clean. Execute-o separadamente e continue depois:
git revert --no-edit incident-start~1
Neste caso preparado, em que a correção já foi aplicada, não há revert inacabado a resolver. Inspecione o histórico e o status em vez de inventar um commit de correção vazio:
git --no-pager log --oneline --decorate
git status --short
Deve haver exatamente uma nova correção acima dos commits originais de Sunset Walk, da pausa e da abertura, sem alterações de trabalho. A referência incident-start ainda identifica a versão recebida. Isso também evita confundir um HEAD que se move com uma referência fixa do incidente.
Revise a correção exata. diff compara os dois snapshots nomeados. HEAD é o commit atualmente em uso na cópia de trabalho; -- separa as revisões do caminho de arquivo seguinte:
git --no-pager diff incident-start HEAD -- events/clay-and-coffee.json
Espere apenas a alteração inversa, de false para true. Confira se o evento mais recente não tem diferenças em relação à versão recebida:
git --no-pager diff incident-start HEAD -- events/sunset-walk.json
Nenhuma saída é esperada para Sunset Walk. Você tem uma correção local com um único objetivo, mantendo o trabalho posterior.
Mude para Event Desk, clique em All workshops no cabeçalho e abra Clay & Coffee novamente. Ele ainda diz Registration is paused. Isso é esperado: o commit do seu repositório de edição é local, enquanto este site lê o repositório compartilhado. A próxima etapa o publica. O ponto de verificação aqui avalia o commit local de correção e os arquivos preservados.
Publique e Teste as Inscrições Corrigidas
Nesta etapa, entregue a correção à main compartilhada, crie uma reserva real na oficina restaurada e confira se o evento mais recente e as reservas existentes permanecem intactos.
Mude para Workspace, ainda em /home/labex/project/event-desk/editor. origin é o nome remoto preparado para /home/labex/project/event-desk/shared.git, um repositório bare local que armazena o histórico compartilhado sem uma cópia de trabalho editável. push origin main envia sua main local para esse destino:
git push origin main
Espere main -> main sem rejeição. Seu novo commit vem após a ponta do histórico recebido, portanto esse push normal preserva todos os commits publicados. O cenário não tem um colaborador atuando em segundo plano. Se algum experimento produzir uma rejeição, inspecione os históricos reais; uma substituição forçada que perca o trabalho original não atende à tarefa.
Revise os ponteiros entregues:
git --no-pager log --oneline --decorate
A main local e origin/main agora identificam o novo commit de correção. A referência original do incidente e todas as mensagens anteriores permanecem abaixo dele.
Mude para Event Desk. Clique em All workshops no cabeçalho da página e abra Clay & Coffee. Agora ele mostra Save your seat, Full name e Reserve a place. Confira a data, o ponto de encontro e o preço EUR 18.00 inalterados antes de inserir um nome.

Procure o título da oficina e o formulário à direita; em uma tela estreita, o formulário fica abaixo dos detalhes do evento. As vagas restantes refletem as reservas reais, portanto a quantidade pode ser diferente da do exemplo.
Digite Jamie Chen, ou outro nome completo de exemplo, e clique em Reserve a place uma vez. A confirmação deve dizer You're on the list. com Clay & Coffee, 14 Nov 2026, 14:00, The Pottery Room, uma vaga e EUR 18.00.

Clique em Download ticket, abra o arquivo .txt resultante pela lista de Downloads do navegador e compare a referência da reserva, a oficina, a data, o horário, o ponto de encontro, o nome, as vagas e o total com a confirmação. A referência é gerada para sua reserva; não é um valor a copiar de uma captura de tela.
Use All workshops no cabeçalho para reabrir Sunset Walk. Sua página completa ainda deve mostrar 15 Nov 2026, 16:00, East Gate e EUR 6.00. Postcard Studio também deve permanecer utilizável, conforme sua capacidade restante real.
Mude para Workspace e leia a coleção de reservas novamente:
cat ../bookings.json
Os dois registros originais e sua reserva anterior em Postcard Studio permanecem; a nova reserva em Clay & Coffee foi adicionada. Você corrigiu o evento versionado sem voltar os dados de reservas a um estado anterior.
Finalize com a verificação do estado de trabalho:
git status --short
Nenhuma alteração rastreada deve permanecer. Anotações pessoais não rastreadas são permitidas caso você tenha criado alguma; não inclua arquivos rastreados extras no site. O ponto de verificação confere o histórico real, a publicação compartilhada, as páginas completas em execução, os registros preservados e o conteúdo real do ingresso.
Resumo
Você usou uma reserva normal para estabelecer o resultado de negócio esperado, rastreou uma falha de inscrição até um commit antigo e adicionou uma correção com um único objetivo usando git revert. O evento mais recente, o histórico original e as reservas existentes permaneceram intactos.
Após um push normal, o site compartilhado aceitou uma nova reserva e entregou um ingresso real com o evento e o preço corretos. O desafio independente muda a configuração com problema e inclui dois commits posteriores válidos, portanto inspecione o histórico recebido antes de escolher o alvo da correção.



