erro git: falha ao enviar algumas referências ao controle remoto


450

Por alguma razão, eu não posso pressionar agora, enquanto eu poderia fazê-lo ontem. Talvez eu tenha estragado tudo com as configurações.

Isto é o que acontece:

Quando eu uso o mestre de origem git push

gitbashscr

Como é meu diretório de trabalho e repositório remoto:

Screenshot of Windows file folder with these directories: .git, css, js. And these files: index.php, readme, setsu.php. The word "local" with an arrow points to the css-folder. Below, screenshot with heading "github", and a css-folder and index.php-file


7
parece que seu repositório local não está sincronizado com o repositório git. você tentou fazer git pull?
R11G

1
sim, mas não faço ideia da seguinte sintaxe após git pull: git pull <remote> <branch>, você pode me deixar ver um exemplo de sintaxe para git pull?
leipzy

1
Verifique esta pergunta semelhante - stackoverflow.com/questions/18588974/…
R11G

3
@ R11G obrigado senhor! este link me ajudou stackoverflow.com/a/18589043/3626672
leipzy

2
Eu recebi esse erro em um novo repositório. Isso ajudou: stackoverflow.com/a/6518774/2067690
HumanInDisguise

Respostas:


618

Se o repositório do GitHub tiver recebido novos commits, enquanto você trabalha localmente, aconselho usar:

git pull --rebase
git push

A sintaxe completa é:

git pull --rebase origin master
git push origin master

Com o Git 2.6+ (setembro de 2015), depois de fazer (uma vez)

git config --global pull.rebase true
git config --global rebase.autoStash true

Um simples git pullseria suficiente.
(Nota: com o Git 2.27 Q2 2020 , a merge.autostashtambém está disponível para seu pull regular, sem rebase)

Dessa forma, você iria repetir (a --rebaseparte) seus commits locais no topo do recém-atualizado origin/master(ou origin/yourBranch: git pull origin yourBranch).

Veja um exemplo mais completo no capítulo 6 Puxe com rebase do Git Pocket Book .

Eu recomendaria um:

# add and commit first
git push -u origin master

Isso estabeleceria um relacionamento de rastreamento entre sua ramificação principal local e sua ramificação upstream.
Depois disso, qualquer push futuro para esse ramo pode ser feito com um simples:

git push

Consulte " Por que preciso enviar explicitamente uma nova ramificação? ".


Como o OP já redefiniu e refez seu commit, além de origin/master:

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin master

Não há necessidade pull --rebase.

Nota: git reset --mixed origin/mastertambém pode ser gravada git reset origin/master, pois a --mixedopção é a padrão ao usar git reset.


tudo bem executar o git pull --rebase sugerido ...? porque eu já fiz> git reset --mixed origin / master> git add. > Git commit -m "Este é um novo commit para o que eu originalmente planejado para ser um amendmend"> git push origem mestre sugeriu aqui stackoverflow.com/questions/18588974/... btw sua resposta parece sir útil
leipzy

3
Para mim, eu só precisava executar o "git commit". :(
Tyler

Obrigado, corrigimos um problema estúpido com o Git LFS, eu me rendi a ter que usar a linha de comando a partir de agora, como resultado haha.
Tyler C

2
Realmente super ... os comandos abaixo funcionaram para mim ... git reset --mixed origin / master git add. git commit -m "Este é um novo commit para o que eu originalmente planejava ser alterado" git push origin master Obrigado @VonC
Hari Narayanan

1
Obrigado, funciona! Eu estava procurando por horas para esta solução!
Redion Xhepa 12/03

96

Alguém tentou:

git push -f origin master

Isso deve resolver o problema.

EDIT: Com base no comentário de @Mehdi abaixo, eu preciso esclarecer algo sobre —force pushing. O comando git acima funciona com segurança apenas para o primeiro commit. Se já havia confirmações, solicitações ou ramificações anteriores, isso redefine tudo e define como zero. Nesse caso, consulte a resposta detalhada do @VonC para obter uma solução melhor.


25
Funciona, mas é ruim, por favor, não o use, a menos que você saiba o que está fazendo. (provavelmente você não sabe o que está fazendo, se você está procurando no SO)
Mehdi

3
Se você tentar -f/ --forceé sempre mais seguro usá-lo --force-with-lease, o que será cancelado se houver alterações posteriores que seriam prejudicadas pelo envio. --force-with-leaseé necessário para muitas situações cotidianas de rebase, mas --forcequase nunca deve ser necessário.
Joshua Goldberg

63

Se você acabou de usar git inite adicionou seus arquivos git add .ou algo semelhante e adicionou sua ramificação remota, pode ser que você não tenha cometido ( git commit -m 'commit message') algo localmente para enviar ao controle remoto ... Acabei de ter esse erro e esse foi o meu questão.


1
apenas topou com isso. O comando Commit não funcionou durante o git add. boa decisão. Obrigado
jgritten

1
Valeu cara! É isso aí. Pensei ter cometido minhas alterações. Agora, o git push -u origin master funciona bem.
tleo 21/07/19

36

Eu tive o mesmo problema. Eu estava recebendo esse problema porque não havia feito nenhum commit nem mesmo o inicial, e ainda estava tentando fazer o push.

Uma vez eu fiz git commit -m "your msg"e então tudo funcionou bem.


8
Isso não faz muito sentido. A pergunta original é sobre o git local estar por trás . De nenhuma maneira "ficar para trás" pode ser resolvido, fazendo um commit local!
GhostCat 4/17/17

Ah, eu também esqueço de cometer: p
Shams Nahid

Isto também é possível que não vai permitir que você empurrar com um vazio comprometer
MBoy

3
Eu apenas tive esse problema e esqueci de cometer. Mensagem de erro deve ser mais claro
Ivan Topić

1
Isso se aplica a mim desde que recebi a mensagem de erro exata e essa solução corrigiu o meu problema.
Diego Fortes

19

Renomeie seu ramo e pressione, por exemplo:

git branch -m new-name
git push -u new-name

Isso funcionou para mim.


1
funcionou, mas por favor, explique por que devemos fazê-lo
kanlukasz

Uau, isso realmente funcionou, mas por quê? Eu tinha um hífen em meu nome filial local: my-branch_wont_push. Depois que o renomeei my_branch_wont_push, git push -u origin my_branch_wont_pushtrabalhei para mim.
cdabel 23/04

13

Eu encontro a solução para esse problema na ajuda do github.

Você pode vê-lo em: Lidando com erros de avanço não rápido

Diz:

Você pode corrigir isso buscando e mesclando as alterações feitas na ramificação remota com as alterações feitas localmente:

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin branch
# Merges updates made online with your local work

Ou, você pode simplesmente usar o git pull para executar os dois comandos ao mesmo tempo:

$ git pull origin branch
# Grabs online updates and merges them with your local work

1
Esse é o processo normal sempre que as coisas estão funcionando como esperado. Não ajuda em nada quando o git pensa que já está atualizado, como @rubyandcoffee pediu.
Tim

10
  1. git init

  2. git remote add origin https://gitlab.com/crew-chief-systems/bot

  3. git remote -v (para verificar o repositório atual)

  4. git add -A(adicione todos os arquivos)

  5. git commit -m 'Added my project'

  6. git pull --rebase origin master

  7. git push origin master


antes de empurrar o código que você precisa para puxar a partir do repositório
James Siva

você pode simplesmente escrever como git pull --rebase mestre origem
James Siva

6

Eu havia enfrentado o mesmo problema, corrigido com as etapas abaixo.

  1. git init
  2. git add .
  3. git commit -m 'Add your commit message'
  4. git remote add origin https://User_name@bitbucket.org/User_name/sample.git

    (O URL acima https: //User_name@bitbucket.org/User_name/sample.git refere-se ao seu URL do projeto de bucket de bits)

  5. git push -u origin master

dica

verifique se sua conta do hub git está vinculada ao git local usando:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

4

Se você estiver usando o gerrit, isso pode ser causado por um ID de mudança inadequado na confirmação. Tente excluir o Change-Id e veja o que acontece.


4

Lembre-se de confirmar suas alterações antes de enviar para o repositório do Github. Isso pode resolver o seu problema.


4

Não confirmar alterações iniciais antes de pressionar também causa o problema


3

Antes de enviar, você deve adicionar e confirmar as alterações ou fazer git push -f origin master


3
git push origin {your_local_branch}:{your_remote_branch}

Se sua filial local e filial remota compartilham o mesmo nome, você pode omitir o nome da filial local, basta usar git push {your_remote_branch}. Caso contrário, ele lançará esse erro.


3

Segui os seguintes passos e funcionou para mim.

 rm -rf .git
 git init
 git add .
 git commit -m"first message"
 git remote add origin "LINK"
 git push -u origin master

2

Isso pode acontecer quando você não possui nenhum arquivo. Tente criar um arquivo de texto e siga os seguintes comandos

git add .
git commit -m "first commit"
git push --set-upstream origin master

2

Para mim, o problema era que eu não adicionei os arquivos antes do commit.

git add .

git commit -m "your msg"


2

Melhor uso rm -rf .git/hookse tente o git push


Interessante, isso me ajudou em um caso em que claramente não havia confirmações na origem (não há necessidade de refazer a análise).
pevik 27/02

Por que você jogaria fora todos os seus ganchos? talvez faça um backup primeiro?
MSpreij 11/03

2

Criei um repositório vazio no GitHub e tenho meu código localmente. Enfrentei o mesmo problema agora, pois segui a sequência abaixo,

git init
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git add .
git push -u origin master

PROBLEMA: Tentei confirmar antes de preparar os arquivos que tenho.

ASSIM, NÓS PRECISAMOS DE COLOCAR OS ARQUIVOS E ENTÃO COMPROMETIR.

Esta é a sequência correta.

git init
git add .
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git push -u origin master

Como eu executo a sequência errada primeiro, eu apenas executo os comandos abaixo

git add .
git commit -m 'Initial Commit'
git push -u origin master

1

Não tenho certeza se isso se aplica, mas a correção para mim foi confirmar algo localmente após o git init. Então eu fui para o remoto usando --set-upstream ...


1

Criando um novo ramo resolvido para mim:

git checkout -b <nameOfNewBranch>

Como esperado, não há necessidade de mesclar, pois a ramificação anterior estava totalmente contida na nova.


1
Eu tive esse problema exatamente, eu estava em feature22 e estava fazendo git push origin feature22-fix, mas feature22-fixnão sair nem local, nem remoto, então eu tinha que primeiro check-out o ramo localmente, em seguida, empurre
Mel

1

Se você estiver tentando inicializar um diretório com um repositório GitHub existente, verifique se está cometendo alterações.

Tente criar um arquivo:

touch initial
git add initial
git commit -m "initial commit"
git push -u origin master

Isso colocará um arquivo chamado initial que você poderá excluir posteriormente.

Espero que esta resposta ajude! Boa sorte!


1

Você precisa dar um pouco de força

Basta pressionar - força.


1

No meu caso, foi o meu huskypacote que não permite o envio.

> husky - pre-push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to push some refs to 'https://username@bitbucket.org/username/my-api.git'

Para empurrá-lo com força, basta executar git push origin master --no-verify

Corri npm run prepushpara ver o erro de depuração, e esta foi a causa:

npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run  npm install  to fix them.
npm ERR!     Invalid: lock file's loopback-utils@0.8.3 does not satisfy loopback-utils@^0.9.0

Ran npm installe confirmar, e o problema foi corrigido.


1

faz estes

git rm --cached *
git add .
git commit -m"upload"
git push --set-upstream origin master

Feliz codificação!


1

Experimente este comando git,

git push origin master –f
git push origin master --force

0

Bem, se nenhuma das respostas acima estiver funcionando e se você tiver estragado alguma coisa ssh-addultimamente. Tentar

ssh-add -D

0

Para usuários de sourcetree

Primeiro faça um commit inicial ou verifique se não há alterações não confirmadas; depois, no lado do sourcetree, há um "REMOTES", clique com o botão direito do mouse nele e clique em 'Push to origin'. Ai está.


0

Isso acontece comigo, pois eu tinha uma tag com o mesmo ramo e tentei enviar o ramo para remoto.


0

No meu caso, o problema era que (estranhamente) não havia ramo chamado mestre. Tirei o repositório do Github.


0

Eu estava enviando o ramo de digitação 'evelop' existente, que ainda não tinha checkout e, em vez disso, queria enviar um ramo chamado 'envelope'. Portanto, a ramificação deve estar existente / check-out na cópia de trabalho local para enviar, é claro, esse erro, para não cometer erros de digitação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.