Solução do erro: fatal: Dirty repository: Having uncommitted changes. Exiting...
- janeiro 02, 2022
- Programação
- Postar um comentário
Ao criar um pipeline com o arquivo ".gitlab-ci.yml" no GitLab e atualizar o assets, por exemplo com
comando "npm run production", o git-ftp apresenta alguns problemas, como “fatal: Dirty
repository: Having uncommitted changes. Exiting...”, “nothing to commit, working tree
clean” ou “Unknown SHA1 object, could not determine changed files, taking all files”.
O primeiro problema acontece ao tentar fazer o “git ftp push” depois que houve modificações nos arquivos
locais (por exemplo, arquivos de assets, como css e js), sem te efetuado um commit antes, para resolver, basta
apenas fazer um commit antes de efetuar o push.
Porém ao efetuar o commit, e realizar o comando “git ftp push” novamente, aparentemente dar certo, mas
ao tentar sincronizar novamente, iremos nos deparar com o erro “Unknown SHA1 object, could not determine
changed files, taking all files.”
Esse outro erro se dar porque o sha1 gravado no arquivo “.git-ftp.log”, é do commit local e não da
branch remota, para ajustar isso, podemos reverter o ultimo commit e atualizar o “.git-ftp.log” com o
número do commit da brench remota. Segue a instruções completa do que precisamos fazer no arquivo
“.gitlab-ci.yml”:
Arquivo: .git-ftp.log
image: dotsunited/git-ftp
script:
- echo "Adicionar os assets mortificados"
- git config --global user.email you@example.com #não precisa alterar
- git config --global user.name "Your Name" #não precisa alterar
- git add *
- git commit -m "Commit assets"
- echo "Sincronizar com o ftp"
- git config git-ftp.url "$FTP_HOST"
- git config git-ftp.user "$FTP_USERNAME"
- git config git-ftp.password "$FTP_PASSWORD"
- git ftp push --auto-init --force
- echo "Atualizar o .git-ftp.log com o commit remoto"
- git reset --hard HEAD@{1}
- git ftp catchup
Tags: gitlab, git-ftp, pipeline, CI/CD e .gitlab-ci.yml.
Postar um comentário