Problema ao empurrar novo código no Github

147

Criei um novo repositório no Github que agora possui apenas o arquivo Readme.md.

Eu tenho um projeto RoR recém-criado que queria enviar para este repositório. A seguir estão os comandos que eu dei no meu Terminal para executar isso junto com o erro que estou recebendo.

git remote add origin https://github.com/aniruddhabarapatre/learn-rails.git

Após o que eu digitei meu nome de usuário e senha

git push -u origin master

Erro ---

To https://github.com/aniruddhabarapatre/learn-rails.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/aniruddhabarapatre/learn-rails.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Esta é minha primeira vez enviando meu código para um repositório do Github e estou perdido com os erros. Pesquisei algumas outras perguntas feitas aqui, mas nenhuma delas teve problemas pela primeira vez.

Aniruddha
fonte

Respostas:

167

Quando você criou seu repositório no GitHub , criou um README.md , que é um novo commit .

Seu repositório local ainda não sabe sobre esse commit. Conseqüentemente:

As atualizações foram rejeitadas porque o controle remoto contém trabalho que você não possui localmente.

Você pode querer seguir estes conselhos:

Você pode mesclar primeiro as alterações remotas (por exemplo, ' git pull') antes de pressionar novamente.

Isso é:

git pull
# Fix any merge conflicts, if you have a `README.md` locally
git push -u origin master
Johnsyweb
fonte
3
O que estou fazendo é o git pull master de origem primeiro e depois empurre novamente.
Bagusflyer 08/07/19
12
em alguns casos, você pode obter um fatal: refusing to merge unrelated historiesnesse caso, git pull --allow-unrelated-histories origin master
enviando
1
Não funciona para mim. remote: push rejeitado. remote: remote: refs / heads / master: ...: nome esperado do committer xxx mas encontrado yyy. Eu faço um git config --global user.email yyy e ele ainda não reconhece. Não pode forçar nada. !!!
Baruch Atta
284

Se este é seu primeiro empurrão

apenas mude o

git push **-u** origin master

mude assim!

git push -f origin master
Van Mart
fonte
5
Isso excluiu meu arquivo leia-me que eu coloquei no github primeiro. Agora parece que eu tenho que fazer tudo de novo.
tomada em branco
3
você pode simplesmente adicionar um aviso de que -f força a empurrar e poderia mexer com o cronograma código
ericksho
Essa é uma maneira ruim, me causou um problema, excluiu o leia-me, que não foi criado por mim, agora tenho que ligar para o mantenedor e dizer que sou estúpido, desculpe-me por criar a leitura novamente. :(
Mohammad Elsayed
62

E️ FÁCIL: Tudo que você precisa é de um empurrão forçado. Porque você pode ter criado um readme.mdarquivo no Github e ainda não o retirou.

git push -f origin master

E aqui está um GIF.

mestre de origem git push -f

⚠️ CUIDADO : O uso forcepode alterar o histórico de outras pessoas no mesmo projeto. Basicamente, se você não se importa com a exclusão de um arquivo para todos, vá em frente. Especialmente se você é o único desenvolvedor do projeto.

Ahmad Awais
fonte
1
Observe que essa abordagem altera o histórico que outros usuários deste repositório já buscaram. git push -f origin masternão é um ótimo hábito de se formar.
Johnsyweb
1
Esta solução pode resolver empurrando commit, mas também remove todos os commit anteriores !.
Twenk11k 21/02/19
2
Cuidado com o Github noobs ... Se você criou um Leiame.md através do GitHub, este comando O REMOVERÁ, pois pressiona suas novas alterações.
daCoda 28/02/19
É por isso que as pessoas chegam aqui. -fA tag remove arquivos e deve ser usada com cuidado.
Ahmad Awais 01/03/19
34

Emita um push forçado com o comando:

git push -f origin master
Samarth Shah
fonte
10
Note que este pode excluir commits passados, que pode ou não ser desejável
Crashalot
8

Supondo que você adicionou o arquivo Leiame.md através da interface fornecida pelo github, o leia-me ainda não está na sua pasta local. Portanto, ao tentar enviar para o repositório remoto remoto, você recebe um erro, porque seu repositório local não possui o arquivo leia-me - ele está "atrasado", por assim dizer. Portanto, conforme sugerido na mensagem de erro, tente "git pull" primeiro. Isso extrairá o leia-me do repositório remoto e o mesclará com o diretório local. Depois disso, você não terá problemas em enviar para o repositório remoto (os comandos que você postou parecem válidos para mim).

Quercus
fonte
6

Isso acontece quando você tenta enviar inicialmente. Porque em seu repositório do GitHub, leia readMe.md ou qualquer outra coisa nova que não esteja no seu repositório local. Primeiro, você precisa mesclar o histórico não relacionado do seu repositório no github.

git pull origin master --allow-unrelated-histories

você pode obter os outros arquivos do repo (readMe.md ou qualquer outro) usando este

git pull origin master

Depois disso

git push -u origin master

Agora você envia com sucesso todas as alterações para o repositório Github. Não sou especialista em git, mas sempre que essas etapas funcionam para mim.

Chathuranga
fonte
5

Considerando que você não realizou suas alterações há algum tempo, talvez isso funcione para você.

git add files
git commit -m "Your Commit"
git push -u origin master

Isso funcionou para mim, espero que funcione para você também.

Rob Mcelvenny
fonte
3

se você usar o git para mac na GUI, poderá escolher Respository-> Pull ou "comm + shift + p" para "git pull" primeiro e depois publicar a fonte.

zheng fuchao
fonte
3

Este erro ocorre quando você envia os dados do diretório local para o repositório git remoto, seguindo o comando git: git push -u origin master

Como os arquivos do diretório local e do diretório remoto do git entraram em conflito.

Solução:

Depois de confirmar todos os arquivos para preparação, siga as etapas abaixo.

  1. Busque os arquivos do repositório remoto como seu conflito com o diretório de trabalho local.

    • git pull <remoter-url> <branch-name>
  2. Confirme as alterações novamente.

    • git add -A
    • git commit -m ‘<comment>'
  3. Após arquivos de mesclagem confirmados com o diretório, você pode usar

    • git push -u origin master

Isso resolverá o problema. Obrigado.

Ravi
fonte
1

Tive um problema semelhante ... Resolvi-o assim (não sou especialista em git, não sei se é a solução certa, mas funcionou para mim):

git pull origin master --allow-unrelated-histories
git merge origin origin/master
git rm README.md
git commit -m 'removed readme.md'
git push origin master
Marco Caggiano
fonte
0

Eu lutei com esse erro por mais de uma hora! Abaixo está o que me ajudou a resolvê-lo. Tudo isso enquanto meu diretório de trabalho era o repositório que eu havia clonado no meu sistema.

Se você está adicionando arquivos ao seu repositório existente ** 1. Puxei tudo o que adicionei ao meu repositório para a minha pasta GitHub:

puxão


Saída foi- algum arquivo leia-me arquivo1 arquivo2

  1. Copiei (arraste e solte) meus novos arquivos (os arquivos que eu queria enviar) para meu repositório clonado (repositório GitHub). Quando você estiver neste repositório, deverá ver seus arquivos antigos e novos.

por exemplo. algum arquivo leia-me file1 file2 newfile1 newfile2

  1. git add "newfile1" "newfile2"

  2. [opcional] status git, isso garantirá se os arquivos que você deseja adicionar foram preparados adequadamente ou se a saída não foi


No mestre da filial Sua filial está atualizada com 'origem / mestre'. Alterações a serem confirmadas: (use "git reset HEAD ..." para unstage)

    new file:   newfile1
    new file:   newfile2

5.git commit -m "qualquer descrição que você queira dar" 6.git push

E todos os meus novos arquivos, juntamente com os mais antigos, foram vistos no meu repositório.

Potatojaisiladki
fonte
0

Uma resposta mais simples é fazer o upload manual do arquivo README.MD do seu computador para o GitHub. Funcionou muito bem para mim.

Bogdan Doicin
fonte
0

Eu uso as opções de Ramos e, em seguida, clique com o botão direito do mouse na pasta "remote / origin" e clique em "delete branches from remote", veja a imagem abaixo:

a imagem

Anderson, Kevin Gomes Cabral
fonte
0

Eu recebi esse erro no Azure Git e isso resolve o problema:

git fetch
git pull
git push --no-verify
canmustu
fonte