git não parece puxar todas as atualizações - HEAD e origem / HEAD em diferentes posições
Eu acabei com um repositório git em um estado que eu não sei como lidar, e eu preciso de alguma ajuda para entender a) o que está acontecendo, como e por que o repositório está nesse estado eb) como eu deveria reagir para isso. Basicamente, ao puxar do controle remoto, termino à frente do controle remoto, mesmo se eu redefinir todas as alterações e tentar novamente.
Isso é o que eu fiz:
Eu bifurquei um repositório git, clonei a versão upstream (que eu não tenho acesso de gravação) e, em seguida, adicionei meu próprio fork à lista de controles remotos, para quegit remote -v
mostra o seguinte:
$ git remote -v
mine [email protected]:tlycken/julia.git (fetch)
mine [email protected]:tlycken/julia.git (push)
origin git://github.com/JuliaLang/julia.git (fetch)
origin git://github.com/JuliaLang/julia.git (push)
Agora quero ter certeza de que minha versão local está atualizada com tudo no repositório upstream, então eu corro
$ git pull origin master
From git://github.com/JuliaLang/julia
* branch master -> FETCH_HEAD
Already up-to-date.
tlycken$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.
# (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
Isso me confunde. Por que minha filial está à frente do mestre de origem? Eu não mudei nada.
Para ver se eu poderia fazer algo sobre isso, eu corrigit lg
(um apelido paragit log --graph
com algum prettyprint). O topo da saída é assim:
* 6912a42 - (HEAD, mine/master, master) Merge pull request #3052 from daviddelaat/linalgnumber (2013-05-10 11:23:09 -0700) <Viral B. Shah>
|\
| * 8116d51 - Use Number instead of Integer in some linalg operations (2013-05-10 19:12:45 +0200) <David de Laat>
* | 6cc1532 - Update .travis.yml configuration in the manual. (2013-05-10 21:41:59 +0530) <Viral B. Shah>
* | fa1e3fe - Update logdet. Close #3070. (2013-05-10 19:35:37 +0530) <Viral B. Shah>
* | a182f7f - (origin/master, origin/HEAD, mine/contrib-base) Merge branch 'master' of github.com:JuliaLang/julia (2013-05-10 03:10:38 -0400) <Jeff Bezanson>
Aparentemente, os HEAD's estão em posições diferentes. Para ter certeza de que recebo o código correto no meu repositório local antes de começar a ramificar, eu fizgit reset --hard origin/HEAD
para remover qualquer coisa que eu estava à frente, e depoisgit pull origin master
para ter certeza de que eu estava atualizado (ou seja, não reajustei demais ou algo assim):
$ git pull origin master
From git://github.com/JuliaLang/julia
* branch master -> FETCH_HEAD
Updating a182f7f..6912a42
Fast-forward
base/linalg/dense.jl | 2 +-
base/linalg/factorization.jl | 44 ++++++++++++++++++++++----------------------
doc/manual/packages.rst | 3 +--
3 files changed, 24 insertions(+), 25 deletions(-)
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.
# (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
e estou de volta onde comecei.
O que está acontecendo aqui? O que devo fazer para chegar a um estado em que meu mestre local tem as últimas atualizações do upstream?