Resolvendo por Rastreamento do Arquivo e Melhores Práticas
Às vezes, o arquivo não rastreado não é descartável; é trabalho que você deseja manter. Neste caso, a abordagem correta é adicionar o arquivo ao sistema de rastreamento do Git, fazendo um commit dele. Esta seção também aborda as melhores práticas para evitar que este erro ocorra em primeiro lugar.
Primeiro, vamos retornar ao branch main e recriar nosso arquivo conflitante.
cd ~/project/git-checkout-demo
git checkout main
echo "## My local changes to feature documentation" > feature.md
Método: Rastrear o Arquivo
Se o arquivo não rastreado for importante, você deve fazer um commit dele no branch atual.
-
Adicione o arquivo à área de staging.
git add feature.md
-
Faça o commit do arquivo preparado.
git commit -m "Add local version of feature.md"
Agora que suas alterações foram salvas com segurança no branch main, o Git pode lidar com a troca. Ao fazer o checkout de feature-branch, o Git simplesmente substituirá o arquivo no espaço de trabalho pela versão desse branch.
git checkout feature-branch
O checkout é bem-sucedido. Suas alterações commitadas estão seguras no histórico do branch main.
Melhor Prática: Use .gitignore
Para evitar que certos arquivos (como logs, artefatos de build ou arquivos de ambiente) sejam rastreados, você deve usar um arquivo .gitignore. O Git ignorará quaisquer arquivos ou diretórios que correspondam aos padrões em .gitignore, impedindo que se tornem arquivos não rastreados conflitantes.
Vamos criar um arquivo .gitignore para ignorar todos os arquivos .log.
## Switch back to main to add the .gitignore file
git checkout main
## Create the .gitignore file
echo "*.log" > .gitignore
Agora, crie um arquivo de log.
touch app.log
Verifique o status.
git status
Observe que app.log não aparece como um arquivo não rastreado. No entanto, o próprio arquivo .gitignore não está rastreado.
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
Você deve sempre fazer o commit do seu arquivo .gitignore para que as regras sejam compartilhadas em todo o projeto.
git add .gitignore
git commit -m "Add .gitignore to ignore log files"
Ao fazer commits frequentes e usar o .gitignore de forma eficaz, você pode reduzir significativamente as chances de encontrar este erro de checkout.