fatal: o mestre de ramificação atual não possui ramificação a montante

227

Estou tentando enviar um dos meus projetos para o github e continuo recebendo este erro:

peeplesoft@jane3:~/846156 (master) $ git push

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

     git push --set-upstream origin master

Então eu tentei e consegui o seguinte:

peeplesoft@jane3:~/846156 (master) $ git push --set-upstream origin master

fatal: Authentication failed

Outro encadeamento de stackoverflow sugeriu que eu tente o seguinte, com resultados decepcionantes.

peeplesoft@jane3:~/846156 (master) $ git push -u origin master

fatal: Authentication failed

Então eu tentei isso:

peeplesoft@jane3:~/846156 (master) $ git config remote.origin.push HEAD

peeplesoft@jane3:~/846156 (master) $ git push

fatal: Authentication failed

Alguma dica?

user1524361
fonte
1
O repositório deve existir no github antes que você possa avançar. Faz? E é o repo que você está trabalhando com um clone dele?
Matt
Clonei o repositório do Github, adicionei 1 linha a um arquivo leia-me e tentei empurrá-lo de volta.
User1524361
1
eu estava recebendo o mesmo erro, porque eu esqueci de comprometer os arquivos
Mateen
3
-u e --set-a montante são as mesmas
brainLoop
Queria que todos soubessem que os gitcomandos que o OP postou me ajudaram, ainda mais do que as respostas
Nathan

Respostas:

94

Você corrigiu o envio, mas independentemente desse problema de envio (que expliquei em " Por que preciso enviar explicitamente uma nova ramificação? ": git push -u origin masterOu git push -u origin --all), agora você precisa resolver o problema de autenticação.

Isso depende do seu URL (ssh como em ' [email protected]/yourRepoou https como em https://github.com/You/YourRepo)

Para https url:

Se sua conta estiver protegida pela autenticação de dois fatores , sua senha normal não funcionará (para URL de https), conforme explicado aqui ou aqui .

Mesmo problema se sua senha contiver caracteres especiais (como nesta resposta )

Se https não funcionar (porque você não deseja gerar uma chave secundária, um PAT: token de acesso pessoal), poderá mudar para ssh, como mostrei aqui .


Conforme observado por qwerty nos comentários, você pode criar automaticamente a ramificação com o mesmo nome no controle remoto com:

git push -u origin head 

Por quê?

  • CABEÇA (consulte o .git\HEADarquivo) tem o refspec do ramo em check-out (por exemplo: ref: refs/heads/master)
  • a política de envio padrão é simples

Como o refpec usado para esse push é head: (sem destino), falta um :<dst>meio para atualizar o mesmo ref que o <src>(head, que é uma ramificação).

Isso não funcionará se o HEAD for desanexado .

VonC
fonte
1
incrível, isso é o que precisamos para a fixação causa raiz questão, não apenas corrigi-lo na superfície
workplaylifecycle
Se você estiver em qualquer ramo, isso é útil git push origin head -u. Cria automaticamente a ramificação com o mesmo nome no controle remoto.
Qwerty
1
@ Qwerty Obrigado, bom ponto. Incluí seu comentário (com detalhes adicionais) na resposta para obter mais visibilidade.
VonC
115

Além disso, você pode usar o seguinte comando:

git push -u origin master

Isso cria (-u) outra ramificação no seu repositório remoto. Uma vez que a autenticação usando ssh é feita, é isso.

TantrajJa
fonte
2
Isso é realmente relevante para o problema, pois o problema é com a autenticação. Ele também afirmou que já tentou isso em seu post.
Mike Precup
2
Eu votei por 2 razões. 1º: o OP afirmou que ele já tentou isso. 2º: -uoption é o atalho para a --set-upstreamopção que nada tem a ver com a criação de uma nova ramificação. Na documentação da opção -uou--set-upstream : "Para cada ramificação atualizada ou enviada com êxito, adicione uma referência upstream (rastreamento), usada pelo git-pull [1] sem argumentos e outros comandos.". Na verdade, eu não entendo por que essa resposta foi votada tanto quanto é enganosa.
Louisfischer 11/07/19
38

Aparentemente, você também recebe essa mensagem de erro ao esquecer o --allparâmetro ao pressionar pela primeira vez. eu escrevi

git push -u origin

que deu esse erro, deveria ter sido

git push -u origin --all

Oh, como eu amo esses erros de copiar e colar ...

O olho
fonte
3
Obrigado. Eu estava recebendo esse erro no Visual Studio Code e isso funcionou, mas no contexto de vários desenvolvedores, alguém pode explicar o que isso fez?
Hell.Bent
15

Você precisa configurar o controle remoto primeiro e depois pressionar.

git remote add origin url-to-your-repo

Instruções reais

Santosh Pillai
fonte
13

Por favor, tente este cenário

git push -f --set-upstream origin master
lorem
fonte
7
Você deve fornecer mais explicações sobre como e por que isso funciona.
Benoît Latinier
6
"não é ruim" é uma explicação muito ruim para qualquer coisa. "não é ruim" torna sua resposta muito ruim.
GhostCat
Isso não faz nada para solucionar o erro OP mencionado: "Falha na autenticação"
Sean the Bean
Sim. Funcionou para mim. Eu acho que isso está forçando o commit ao ramo upstream (remoto).
vkg 17/05/19
12

Se você definir a ação, git pushela deverá ser executada se nenhum refspec for fornecido na linha de comandos, nenhum refspec estiver configurado no controle remoto e nenhum refspec estiver implícito em nenhuma das opções fornecidas na linha de comandos.

Apenas faça:

git config --global push.default current

então

git push
DariusV
fonte
1
Você precisa estar ciente de que isso altera as configurações globais do git, o que pode ter alguns efeitos adversos. Mas era exatamente isso que eu estava procurando.
Mavamaarten 25/11/19
@Mavamaarten, quais são os possíveis efeitos adversos?
kosii 26/03
7

Bem, eu estava tendo o mesmo problema durante o upload e resolvi fazendo o mesmo que ele diz: Antes, eu estava tentando passar pelo terminal para o meu repositório no Linux por https como

git push https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git

Mas não estava obtendo nenhum resultado e, portanto, desci mais fundo e tentei:

git push --set-upstream https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git master

E funcionou. Assim, você será solicitado com nome de usuário e senha. Eu também gerei um token e, em vez de Senha, colei o token e, portanto, fui realizado com êxito.

  1. Para gerar um token, acesse sua conta do Github e nas Configurações do desenvolvedor e crie outro token.
  2. Depois disso, copie esse token e cole no prompt de senha quando for solicitado.
Siddharth Choudhary
fonte
6

de um lado muito simples, depois de ter outros galhos, você não pode simplesmente usar para empurrar um galho

git push

Mas você precisa especificar o ramo agora, mesmo que tenha feito o checkout do ramo que deseja enviar, então

git push origin <feature_branch>

Onde pode ser até o masterramo

Abhishek
fonte
5

Cometi o erro simples de esquecer de confirmar:

git commit -m "first commit"

então git push origin mastertrabalhou.

yl_low
fonte
4

Eu tive o mesmo problema

insira a descrição da imagem aqui

Eu resolvi isso usado abaixo do comando

$ git branch --set-upstream develop origin/develop

e ele adicionará uma configuração no arquivo de configuração na pasta .git.

insira a descrição da imagem aqui

bluetata
fonte
3

Primeiro uso git pull origin your_branch_name Entãouse git push origin your_branch_name

FRabbi
fonte
Desculpe se isso parece bobagem. Como conhecer o nome da minha filial. Meu repo está na AWS.
Pravinraj Venkatachalam
Use "git branch"
Darius Miliauskas
3

Existe uma solução simples para isso que funcionou para mim no macOS Sierra. Eu fiz estes dois comandos:

git pull --rebase git_url(Ex: https://github.com/username/reponame.git)
git push origin master

Se ele mostrar algum erro fatal em relação ao upstream após qualquer push futuro, basta executar:

git push --set-upstream origin master
theRana
fonte
0

1. Um computador e seu github associado. Use SSH. Código do computador para que você não precise enviar a descrição da imagem verificada aqui

2. git não pode gerenciar pasta vazia. Então você tem que escrever um arquivo readme.md salvo em um arquivo. Caso contrário, você não encontrará o arquivo.

3. Seu projeto local não é nada de novo. Por favor

git init

git remote add origin +"githublink"

git add .

git commit -m "" vá novamente.

4. então git pull origin master(a chave)

5. Finalmente git push origin master(resolva todos os problemas).

http://my.oschina.net/psuyun/blog/123005参考 链接

王 逍遥
fonte
0

Se você estiver tentando enviar seu código diretamente para a ramificação principal, use o comando

git push origin master

Isso me ajuda.

HitechZa
fonte
0

Eu também recebi o mesmo erro. Acho que foi porque eu o clonei e tentei retroceder. $ git push -u origin master Este é o comando certo.Tente isso

Contando objetos: 8, pronto. Compactação delta usando até 2 threads. Compactando objetos: 100% (4/4), pronto. Escrevendo objetos: 100% (8/8), 691 bytes | 46,00 KiB / s, concluído. Total 8 (delta 1), reutilizado 0 (delta 0) remoto: resolvendo deltas: 100% (1/1), concluído.

  • [new branch] master -> master Mestre da filial configurado para rastrear o mestre da filial remota desde a origem.

    It was successful. Try to create new u branch 
    
Malsha
fonte
0

Eu tive o mesmo problema, a causa foi que eu esqueci de especificar o ramo

git push myorigin feature/23082018_my-feature_eb
Preto
fonte
0

Para mim, eu estava enviando as alterações para um repositório particular ao qual não tinha acesso de gravação. Verifique se você possui os direitos de acesso válidos ao executar operações push ou pull.

Você pode verificar diretamente via

mayank dhawariya
fonte
1
"Verificar diretamente via" o quê?
Mike Poole
0

Para mim, foi porque eu havia excluído a pasta .git oculta .

Corrigi-o excluindo a pasta, clonando novamente e refazendo as alterações.

AmmarBaali
fonte
0

Se você estiver em qualquer filial, poderá usar o seguinte:

git push origin head -u

Isso criará automaticamente uma nova ramificação com o mesmo nome no controle remoto.

Qwerty
fonte
-1

Para resolver esse problema, enquanto verifica o código por gitsi mesmo, você precisa dar o comando abaixo:

git checkout -b branchname origin/branchname

Aqui, por padrão, estamos definindo the upstream branch, para que você não esteja enfrentando o problema mencionado.

Deepa
fonte
-2

Para mim, o problema vem do nome do meu ramo: "# nome do meu ramo", sem "#" está funcionando bem!

aurelienv
fonte