book - git search repository



Git, Como redefinir origem/mestre para um commit? (2)

A solução encontrada here nos ajudou a atualizar o master para um commit anterior que já havia sido enviado:

git checkout master
git reset --hard e3f1e37
git push --force origin e3f1e37:master

A principal diferença da resposta aceita é o hash de confirmação "e3f1e37:" antes do mestre no comando push.

Eu redefinir meu mestre local para um commit por este comando:

git reset --hard e3f1e37

quando eu $ git status comando $ git status , o terminal diz:

# On branch master
# Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.

#   (use "git pull" to update your local branch)
#
nothing to commit, working directory clean

Como eu quero redefinir a origem / cabeçalho também, eu faço o checkout para origem / master:

$ git checkout origin/master
Note: checking out 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 2aef1de... master problem fixed for master. its okay now.

e redefina o cabeçalho por este comando:

$ git reset --hard e3f1e37
HEAD is now at e3f1e37 development version code incremented for new build.

Então eu tentei adicionar commit à origem / header que eu não tive sucesso.

$ git commit -m "Reverting to the state of the project at e3f1e37"
# HEAD detached from origin/master
nothing to commit, working directory clean

Finalmente, eu faço o checkout para o meu mestre local.

$ git checkout master
Switched to branch 'master'
Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Desde então, eu reconfigurei a cabeça de origem / mestre e espero que local e origem estejam na mesma direção, mas como você vê, git está dizendo que meu local / mestre está atrás de origem / mestre por 7 commits.

Como posso corrigir esse problema? As coisas que estou procurando é Head of local / master e origin / master point to same commit. A imagem a seguir mostra o que eu fiz. Obrigado.


Como eu tinha uma situação parecida, pensei em compartilhar minha situação e como essas respostas me ajudaram (obrigado a todos).

Então eu decidi trabalhar localmente alterando meu último commit toda vez que eu queria salvar meu progresso no branch principal (eu sei, eu deveria ter se ramificado, comprometido com isso, continuado empurrando e depois fundido de volta ao master).

Uma tarde da noite, com medo paranoico de perder meu progresso para falha de hardware ou algo fora do éter, decidi empurrar o mestre para a origem. Mais tarde eu continuei alterando o meu master branch local e quando decidi que era hora de empurrar novamente, fui confrontado com diferentes branchs mestras e descobri que não posso alterar origem / upstream ( duh! ) Como se eu pudesse desenvolver branches locais.

Então eu não fiz checkout master localmente porque eu já estava após um commit. Mestre permaneceu inalterado. Eu nem precisei reiniciar - difícil, meu commit atual foi OK.

Eu apenas forcei o push a originar, mesmo sem especificar qual commit eu queria forçar no master, já que neste caso é em qualquer HEAD. Verifiquei o git diff master..origin/master para que não houvesse diferenças e é isso. Tudo fixo. Obrigado! (Eu sei, eu sou um novato, por favor, perdoe!).

Então, se você já está bem com sua filial master localmente, apenas:

git push --force origin master
git diff master..origin/master




git-reset