A resposta está lá, git está dizendo para você buscar primeiro.
Provavelmente alguém já empurrou para masterizar, e seu commit está atrasado. Portanto, você deve buscar, mesclar o conjunto de alterações e, então, será capaz de enviar por push novamente.
Se você não fizer isso (ou pior ainda, se você forçar usando a --force
opção), você pode bagunçar o histórico de commits.
EDIT: Eu entro em mais detalhes sobre o último ponto, já que um cara aqui acabou de dar o conselho muito ruim de usar a --force
opção.
Como git é um DVCS, idealmente muitos outros desenvolvedores estão trabalhando no mesmo projeto que você, usando o mesmo repositório (ou um fork dele). Se você sobrescrever forçosamente com seu changeset, seu repositório não combinará com outras pessoas, porque "você reescreveu o histórico". Você deixará outras pessoas infelizes e o repositório sofrerá. Provavelmente um gatinho no mundo também chorará.
TL; DR
- Se quiser resolver, primeiro busque (e depois mescle).
- Se você quiser hackear, use a
--force
opção.
Você pediu o primeiro, no entanto. Vá para 1) sempre, mesmo que você sempre use o git sozinho, porque é uma boa prática.
experimentar:
Depois de escrever este código, recebi outro erro: (non-fast-forward)
Eu escrevo este código:
E resolveu meu problema
fonte
git merge master
.Você deve usar
git pull
, esse comando faça ae emgit fetch
seguida faça ogit merge
.Se você usar um
git push origin master --force
comando, poderá ter problemas no futuro.fonte
pull é sempre a abordagem certa, mas uma exceção pode ser quando você está tentando converter um sistema de arquivos sem Git em um repositório Github. Lá você teria que forçar o primeiro commit.
fonte
Tente este comando git
ou com falta de força
-f
git push origin master -f
fonte
Conforme indicado na mensagem de erro, você deve "buscar primeiro". Isso funcionou para mim. Use o comando:
git fetch origin master
Em seguida, siga estas etapas para mesclar:
git pull origin master
git add .
git commit -m 'your commit message'
git push origin master
fonte
Tente este comando para resolver -
Ou
fonte
Você pode usar o seguinte comando: Primeiro clone uma nova cópia de seu repo, usando a sinalização --mirror:
Em seguida, siga os códigos de acordo:
Adicionar um projeto existente ao GitHub usando a linha de comando
Mesmo que isso não funcione, você pode simplesmente codificar:
ou
fonte
Siga as etapas abaixo, pois também tive o mesmo problema:
(Para ver se a filial local pode ser facilmente mesclada com uma remota)
(Agora envie todo o conteúdo do repositório git local para o seu repositório online)
fonte
É provável que outra pessoa (por exemplo, seu colega) tenha colocado commits
origin/master
que não estão em seumaster
branch local , e você está tentando enviar alguns commits de seu branch local para o servidor. Em 99% dos casos, supondo que você não queira apagar o trabalho delesorigin
, você tem duas opções:2) Mesclar suas alterações em seu branch local e, em seguida, enviar o resultado mesclado.
git checkout master git pull # resolve conflicts here git push
(Observe que
git pull
é essencialmente apenas umgit fetch
egit merge
neste caso.)1) Rebase seu branch local, de forma que pareça que seu colega fez seus commits primeiro, e então você fez seus commits. Isso mantém o histórico de commits bom e linear - e evita um "commit de mesclagem". No entanto, se você tiver conflitos com as mudanças do seu colega, você pode ter que resolver esses conflitos para cada um de seus commits (ao invés de apenas uma vez) no pior caso. Essencialmente, isso é mais agradável para todos, mas mais esforço para você.
git pull --rebase # resolve conflicts here git push
(Observe que
git pull --rebase
é essencialmente aegit fetch
agit rebase origin/master
.)fonte
Às vezes isso acontece quando você duplica arquivos, normalmente tipo README.
fonte
Seu erro pode ser devido ao branch de mesclagem.
Basta seguir isto:
etapa 1:
git pull origin master
(caso você receba alguma mensagem, ignore-a)etapa 2:
git add .
etapa 3:
git commit -m 'your commit message'
etapa 4:
git push origin master
fonte
Primeiro, você deve usar
git pull
, depois o comando do agit fetch
e em seguida fazer o git merge.Se você usar um
git push origin master --force
comando, poderá ter problemas no futuro.fonte
Eu superei isso fazendo check-out de um novo branch como este:
Você fica com 2 ramos: Master e newbranch, que você pode gerenciar para fundir mais tarde.
fonte
Problema resolvido
Problema que tive
Eu também tive o mesmo problema. O problema é que seus
commits
outros repositórios não foram bempushed
- sucedidos, então você precisa executar os seguintes comandos:git fetch origin master
resultado:
From https://github.com/username/repo-name * branch master -> FETCH_HEAD
git merge origin master
resultado:
Merge made by the 'recursive' strategy.
repo-name/ReadMe.md | 1 -
1 file changed, 1 deletion(-)
git push
resultado:
Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Delta compression using up to 8 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 1.00 KiB | 1.00 MiB/s, done. Total 6 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 1 local object. To https://github.com/user_name/repo-name.git 0852d5vf..70v56d9 master -> master
Muito obrigado
fonte
Você apenas tem que mencionar o nome do seu ramo junto com o nome remoto.
fonte
No meu caso, isso aconteceu ao criar o link representante do GitHub, inicializei-o com o arquivo README
Ao criar o Git remoto, não o inicialize com o arquivo README, caso contrário, ele mostraria err
Não faça isso & definitivamente funcionará bem. Em vez disso, inicialize-o com o arquivo leia-me se desejar depois de enviar para o branch master
fonte
Isso funcionou para mim, uma vez que nenhuma das outras soluções funcionou para mim. NEM MESMO FORÇA!
https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line
Só tive que passar pelo Git Bash
Então, de volta ao meu cmd e eu poderia: o
git push heroku master
que no meu caso era o problema.fonte
este trabalho para mim
git init
git add --all
3.git commit -m "nome"
4.git push origin master --force
fonte
Isso funcionou para mim:
fonte
É simples usar este comando:
e fará seu trabalho
fonte