[DÚVIDA GIT] Erro ao tentar fazer o push para branch main

Estou tentando subir os arquivos do meu projeto de CSS para o meu Git Hub usando o git-bash, mas está dando erro.

crica@DESKTOP-MF2BC23 MINGW64 ~/OneDrive/Documents/Hiring Coders/CSS/portfolio1-criscosta-dev (main)
$ git push -u origin main
To https://github.com/cris-dsc/portfolio1-criscosta-dev.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'https://github.com/cris-dsc/portfolio1-criscosta-dev.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 integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Eu tentei fazer a mesma coisa algumas horas atrás e deu certo. Mas segui à risca as instruções das aulas de Git e a professora usa master ao invés de main, então meu repositório original ficou meio confuso e achei melhor apagá-lo. Depois de apagar no GitHub, eu apaguei a pasta .git do diretório local e criei uma pasta diferente para o projeto. No GitHub também criei um novo repositório com um nome diferente do que eu tinha apagado.

Até aí estava tudo indo bem. Dei um git init e apareceu (main) do lado do diretório, tudo certo. Dei git add . e deu certo, fiz um commit e também funcionou normalmente. Mas quando tentei fazer o push deu esse erro. Que que eu fiz de errado hein? O novo repositório tem outro nome, não entendo como pode ter outro repostório com a mesma ref.

Pensei que talvez o problema seja o arquivo README que já existe no repositório remoto, mas o que eu apaguei ta,bém tinha um README e não deu erro nenhum.

2 Likes

Isso acontece quando estamos tentando enviar arquivos para o repositório remoto, mas criamos um novo arquivo no remoto que ainda não foi puxado para o local, digamos README.md. Nesse caso, como o erro diz git rejects the update
primeiro atualize o respositório local com os arquivos do remoto com o comando:
$git pull

Após a atualização mande os novos arquivos do local para o remoto com o comando:
$git push -u origin <branch-name>

1 Like

Acabei de fazer isso e continuo com o erro. Preciso escrever algo depois de git pull? Eu só escrevi o comando, dei enter, aí apareceu isso:

$ git pull
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), 1.84 KiB | 78.00 KiB/s, done.
From https://github.com/cris-dsc/portfolio1-criscosta-dev
 * [new branch]      main       -> origin/main
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> main

Aí tentei o push de novo e deu outro erro:

$ git push -u origin main
To https://github.com/cris-dsc/portfolio1-criscosta-dev.git
 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/cris-dsc/portfolio1-criscosta-dev.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Pelo que entendi da mensagem de erro, preciso fazer um merge antes de dar push de novo, é isso?

1 Like

Você pode configurar para que sua branch main local rastreie a branch main do github como um upstream.

git branch --set-upstream-to=origin/<nome-branch-local> main

Após isso pode fazer o comando git pull

1 Like

Ta falando que não existe essa branch. Ta difícil viu…

$ git branch --set-upstream-to=origin/portfolio1-criscosta-dev main
fatal: the requested upstream branch 'origin/portfolio1-criscosta-dev' does not exist
hint:
hint: If you are planning on basing your work on an upstream
hint: branch that already exists at the remote, you may need to
hint: run "git fetch" to retrieve it.
hint:
hint: If you are planning to push out a new local branch that
hint: will track its remote counterpart, you may want to use
hint: "git push -u" to set the upstream config as you push.
hint: Disable this message with "git config advice.setUpstreamFailure false"
1 Like

Calma jovem padawan. Você vai conseguir. Apenas errou o comando.

Provavelmente você digitou o nome do repositório.
Errado: git branch --set-upstream-to=origin/portfolio1-criscosta-dev main

Verifique se a branch se chama main ou master com o comando git branch.
Certo: git branch --set-upstream-to=origin/main main

1 Like

Não adiantou:

crica@DESKTOP-MF2BC23 MINGW64 ~/OneDrive/Documents/Hiring Coders/CSS/portfolio1-criscosta-dev (main)
$ git branch --set-upstream-to=origin/main main
branch 'main' set up to track 'origin/main'.

crica@DESKTOP-MF2BC23 MINGW64 ~/OneDrive/Documents/Hiring Coders/CSS/portfolio1-criscosta-dev (main)
$ git push -u origin main
To https://github.com/cris-dsc/portfolio1-criscosta-dev.git
 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/cris-dsc/portfolio1-criscosta-dev.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Eu veirifiquei o nome da branch e tá main.

1 Like

Qual o nome da branch principal no repositório remoto?
Como está o seu remote ?
Verifica com o comando git remote
Mande um print.

No repositório remoto está main
No repositório local tbm está main (segudo o resultado do comando git branch)
Com git remote está origin


image

1 Like

Pera aí o comando deu certo lá kkk
Tu conseguiu rastrear o branch remoto.

Depois tu fez um git push direto.
Faz agora um git pull e depois tenta o push de novo.

Esse git pull é só isso que digito ou preciso digitar algo depois, tipo nome num sei do quê? Ai eu to nervosa já viu (mas agradeço pela ajuda e pela paciência :smiling_face_with_tear:)

1 Like

Já que o repositório local está rastreando o remoto não precisa de argumentos, só um git pull diretão.

Que nada. Acontece mesmo, já tive esse erro várias vezes kk

1 Like
$ git pull
fatal: refusing to merge unrelated histories

Desisto. Vou apagar o repositório do GitHub e criar outro sem README. Li num outro fórum que ambas branches precisam de um “ancestral comum” e que o fato de ter criado um repositório remoto e feito um commit inicial no GitHub é que pode estar causando o problema. Vou ver se apagar (de novo) e criar outro repositório novo (outra vez) resolve…

1 Like

É só fazer o comando git pull origin main --allow-unrelated-histories
Ai ele vai fazer o merge de dois projetos com o históricos diferentes, ou seja, remoto e local kk

Perceba que o erro mudou, é só resolvendo um por um e catalogar isso em um aplicativo de notas. Você pode se deparar com o erro várias vezes. Não desista, dattebayo.

1 Like

No fim eu fiz o que falei de apagar e criar o repositório remoto de novo e deu tudo certo. Então não cheguei a testar a sugestão de fazer merge com históricos diferentes. Mas agradeço muito pela ajuda e pela paciência :slightly_smiling_face: :green_heart:

Esse Git tá me dando muito trabalho. Quando acho que entendi, aparecem esses erros doidos.

1 Like

É normal. Salva essas mensagens em um aplicativo de notas e quando se deparar com o erro novamente siga esses passos.
Tenho quase certeza que após aquele comando o git pull e o git push iriam rodar sem maiores problemas.
Boa sorte nesse inicio, jovem padawan.

3 Likes

Essas dúvidas sempre surgem e sempre há inúmeras formas de lidar com elas.
Você tem 2 contextos/repositórios diferentes pra sincronizar:

  • Um repositório no Github com o arquivo readme (1 commit inicial já foi feito lá pra adicionar ele).
  • Uma pasta local com outro repositório com seus arquivos.

Uma alternativa mais rápida do tipo “chutar o balde” de lidar com isso seria você primeiro clonar o repositório do Gihub pra uma nova pasta, copiar seus arquivos pra ela, fazer novo commit (que será o segundo agora) e enviar pro Github:

A partir da pasta anterior, acredito que sua ~/OneDrive/Documents/Hiring Coders/CSS/ execute o comando de clonagem, que vai criar uma pasta com o nome do repositório do Github:

git clone GitHub - cris-dsc/portfolio1-criscosta-dev: Projeto do meu 1º portfólio: página em HTML estilizada com CSS.
(atenção para o caso de já haver uma pasta com esse nome do repositório aí, pois o git vai tentar criar e não vai executar se a pasta já existir, se for o caso renomeia a antiga)

Copie ou mova seus arquivos da pasta/diretório onde estiverem para essa nova pasta criada pelo comando clone, entre nela no terminal e execute so comandos normalmente, adicionando as novas alterações ao repositório.

git add .
git commit -m “segundo commit”
git push

4 Likes

Obrigada pelo passo a passo @AndreMR
Se eu me deparar com esse erro de novo vou seguir essas instruções. :slightly_smiling_face:

1 Like

Olá cristiane … tudo bem ?? vc conseguiu resolver , pois eu estou com o memso problema ? se vc cosneguir pdoderiamos covnersar ???