Come spingere a monte, in Git?

Ho un progetto con un paio di amici in GitLab, e c’è, naturalmente, il branch master, e ci sono alcuni altri troppo. Quando ho clonato il repository, ho creato anche un monte con il comando git remote add upstream ....

Poi, ho rilasciato la git fetch upstream. Seguito da git checkout upstream/test1. Ora, se io tipo git branch -a, ottengo un output simile a questo:

* (HEAD detached at upstream/test1)
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/upstream/test1
  remotes/upstream/master

Questo è tutto bene, ma poi ho fatto alcune modifiche al codice nel mio upstream/test1 ramo. Non voglio ancora li spingono a origin/test1, ma voglio essere in grado di spingere la mia modifiche upstream/test1 in modo che il mio altro amico può vedere. Ma, se posso eseguire il set di comandi:

git add .
git commit -m "Sample message"

Dopo il commit ho ricevuto il messaggio:

[detached HEAD 4f20e95] Sample message
 5 files changed, 12 insertions(+), 1 deletions(-)

E il valore di hash modifiche 4f20e95 nel mio prompt dei comandi. Allora, se faccio git push, ottengo i seguenti messaggi di errore:

fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

    git push origin HEAD:<name-of-remote-branch>

Come posso spingere il mio monte ramo, senza in realtà spingendo la sua origine.

Possibile duplicato di Git push a monte di origine, senza la creazione di ramo locale
“La TESTA indipendente” significa, letteralmente, non siete su un ramo.
Io non credo che sia un duplicato, dato che l’OP vuole solo sapere come push-to –upstream, e non hanno nulla contro la creazione di una filiale locale.

OriginaleL’autore typos | 2016-10-19

One Reply
  1. 5

    Ramo upstream/test1 è un monitoraggio remoto ramo, che non può essere aggiornato manualmente. Tali rami rami pista su un server remoto, e sono aggiornati solo durante git fetch/git push.

    Invece, check-out di un nuovo ramo locale prima:

    git checkout -b test1 upstream/test1
    

    E si impegnano come al solito. Dal momento che si sono già impegnati, invece che fare:

    git checkout -b test1 4f20e95
    

    Quando si è pronti, premere per upstream:

    git push upstream test1
    

    Quando si esegue un normale git push, Git utilizza i valori predefiniti per il telecomando e il ramo di spingere sulla base di determinate opzioni di configurazione. Tuttavia, se non siete su un ramo (in modo da ottenere il detached HEAD messaggio), quindi Git non so cosa filiale di spingere, dando così l’errore che hai ricevuto.

    Grazie per la risposta!!

    OriginaleL’autore Scott Weldon

Lascia un commento