git: como posso obter a última versão do meu código?
estou a usar o Git 1.7.4.1. Quero obter a versão mais recente do meu código do repositório, mas estou recebendo erros ...
$ git pull
….
M selenium/ant/build.properties
….
M selenium/scripts/linux/get_latest_updates.sh
M selenium/scripts/windows/start-selenium.bat
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution, or use 'git commit -a'.
Apaguei as cópias locais dos ficheiros de que a ferramenta se queixa, mas ainda recebo os erros. Como posso verificar a versão mais recente do repo remoto? - Dave
3 answers
Se não se importar com quaisquer alterações locais (incluindo ficheiros não rastreados ou gerados ou subrepositórios que por acaso estão aqui) e só quiser uma cópia do repo:
git reset --hard HEAD
git clean -xffd
git pull
Mais uma vez, isto vai destruir todas as alterações que fez localmente, por isso use com cuidado. Pense em rm -Rf
ao fazer isto.
Caso 1: não se importam com as mudanças locais
-
Solução 1: Obter o código mais recente e reiniciar o código
git fetch origin git reset --hard origin/[tag/branch/commit-id usually: master]
-
Solução 2: apagar a pasta e clonar de novo: D
rm -rf [project_folder] git clone [remote_repo]
Caso 2: Cuidado com as alterações locais
-
Solução 1: não há conflitos com a versão nova-online
git fetch origin git status
Vai relatar algo como:
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
Então pegue o versão mais recente
git pull
-
Solução 2: conflitos com a versão nova-online
git fetch origin git status
Vai relatar algo como:
error: Your local changes to the following files would be overwritten by merge: file_name Please, commit your changes or stash them before you can merge. Aborting
Commit your local changes
git add . git commit -m ‘Commit msg’
Tente obter as mudanças (irá falhar)
git pull
Vai relatar algo como:
Pull is not possible because you have unmerged files. Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution, or use 'git commit -a'.
Abra o ficheiro de conflito e corrija o conflito. Então:
git add . git commit -m ‘Fix conflicts’ git pull
Vai relatar algo como:
Already up-to-date.
Mais informações: como é que eu uso o ' git reset -- cabeça dura ' para reverter a um commit anterior?
Eu suspeito que o que aconteceu pode ser que você tenha apagado os arquivos que você modificou (porque você não se importou com essas alterações) e agora o git está tomando a exclusão para ser uma mudança.
Aqui está uma abordagem que move as suas alterações para fora da sua cópia de trabalho e para o "stash" (recuperável caso se verifique que alguma vez precisa delas de novo), para que possa então puxar as alterações mais recentes para baixo a partir do rio.
git stash
git pull
Se alguma vez quiser recuperar os seus ficheiros (conflitos potenciais com alterações a montante e tudo), execute um git stash apply
para colocar essas alterações no topo do seu código. Dessa forma, você tem uma abordagem" desfazer".