Domanda

Dispongo di un hub di un repository nudo remoto.Lavoro solo nel ramo master. L'ultima frase di questo messaggio di errore qui sotto mi fa chiedere: come faccio a sapere qual è il "telecomando configurato di default per il tuo ramo attuale" ?E come lo imposto?

[myserver]~/progs $ git remote -v
hub     ~/sitehub/progs.git/ (fetch)
hub     ~/sitehub/progs.git/ (push)

[myserver]~/progs $ git branch -r
  hub/master

[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master

[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
È stato utile?

Soluzione

Tieni traccia del ramo remoto

Puoi specificare il repository remoto predefinito per il push e il pull utilizzando l'opzione track di git-branch.Normalmente lo faresti specificando l'opzione --track durante la creazione del ramo principale locale, ma poiché esiste già, aggiorneremo manualmente la configurazione in questo modo:

Modifica il tuo .git/config

[branch "master"]
  remote = origin
  merge = refs/heads/master

Ora puoi semplicemente git push e git pull.

[ fonte ]

Altri suggerimenti

Puoi farlo in modo più semplice, assicurandoti che il tuo .gitconfig sia lasciato in uno stato significativo:

Utilizzo di Git versione v1.8.0 e successive

git push -u hub master quando si preme o:
git branch -u hub/master

OPPURE

(Questo imposterà il telecomando per il ramo attualmente estratto su hub/master )
git branch --set-upstream-to hub/master

OPPURE

(Questo imposterà il telecomando per il ramo denominato branch_name su hub/master )
git branch branch_name --set-upstream-to hub/master

Se utilizzi v1.7.x o versioni precedenti

devi utilizzare --set-upstream:
git branch --set-upstream master hub/master

Per completezza: le risposte precedenti spiegano come impostare il ramo a monte, ma non come vederlo.

Ci sono alcuni modi per farlo:

git branch -vv mostra queste informazioni per tutti i rami.(formattato in blu nella maggior parte dei terminali)

cat .git/config mostra anche questo.

Per riferimento:

il comando per ottenere il push remoto effettivo per il ramo, ad esempio master, è:

git config branch.master.pushRemote ||git config remote.pushDefault ||git config branch.master.remote

Ecco perché (dall'output di "man git config"):

<”branch.name.remote [...] indica a git fetch e git push quale telecomando recuperare da / push a [...] [per push] può essere sovrascritto con remote.pushDefault (per tutti i rami) [e] per il ramo corrente [..] ulteriormente sovrascritto da branch.name.pushRemote [...]

Per qualche ragione, "man git push" parla solo di branch.name.remote (anche se ha la minima precedenza dei tre) + afferma erroneamente che se non è impostato, invia i valori predefiniti a origin - non lo fa, è solo che quando cloni un repository, branch.name.remote è impostato su origin, ma se rimuovi questa impostazione, git push fallirà, anche se hai ancora l'origine remota

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top