2015-07-31 7 views
5

git remote --V mostrare informazioni a distanzaL'URL remoto per fetch e push sarà diverso?

origin https://github.com/test/testing-iOS.git (fetch) 
origin https://github.com/test/testing-iOS.git (push) 

Essa mostra che sia recuperare e spingere utilizzano lo stesso URL remoto.

Domanda:

Quando sarà (se mai) URL remoto per recuperare e spingere essere diverso?

Quali comandi è possibile utilizzare per modificare l'URL remoto per il recupero o il push separatamente?

risposta

5

Sì (utilizzando un telecomando diverso), ed è per questo che Git 2.5 introduce una nuova stenografia ref @{push}.
Vedere "Viewing Unpushed Git Commits"

Quali comandi si può utilizzare per cambiare URL remoto per recuperare o spingere a parte?

Hai bisogno di un telecomando a parte:

git remote add myfork /url/for/my/fork 
git config remote.pushdefault myfork 

Il post sul blog GitHub "Improved support for triangular workflows" illustra l'uso di @{push}:

https://cloud.githubusercontent.com/assets/1319791/8943755/5dcdcae4-354a-11e5-9f82-915914fad4f7.png

Vedere che cosa impegna che hai aggiunto dal tuo attuale ramo dall'ultima spinta:

git clone https://github.com/YOUR-USERNAME/atom 
cd atom 
git config remote.pushdefault origin 
git config push.default current 
  • remote.pushdefault specifica dove a spingere (a cui repo remoto).
  • push.default specifica cosa a spingere (quello refspec), quando nessun refspec è esplicitamente dato.
    current, in quest'ultimo caso, significa "spingere il ramo corrente per aggiornare un ramo con lo stesso nome sul lato ricevente".

Il seguente ramo preleverà da un URL, spingere ad un altro:

git remote add upstream https://github.com/atom/atom 
git fetch upstream 
git checkout -b whizbang upstream/master 

(Qui i whizbang rami tiene traccia upstream/master, ma spinge a origin/whizbang)

git log @{push}.. 

Questo utilizza la nuova notazione @{push}, che denota il valore corrente del ramo di localizzazione remota che il reggiseno corrente nch sarebbe spinto da git push, ovvero origin/whizbang.
È inoltre possibile fare riferimento alla destinazione push di un ramo arbitrario utilizzando la notazione [email protected]{push}.

+0

Qual è la differenza tra remote.pushdefault e push.default? – Boon

+0

@Boon 'remote.pushdefault' specifica ** dove ** premere (a cui repo remoto). 'push.default' specifica ** cosa ** per spingere (quale refspec), quando nessun refspec è esplicitamente dato. 'current', in quest'ultimo caso, significa" spingere il ramo corrente per aggiornare un ramo con lo stesso nome sul lato ricevente ". – VonC

+0

Grazie - così nel tuo esempio, ottengo quel whizbang tracce upstream/master, ma dove specifica che il push andrà a origin/whizbang? – Boon

3

Dalla documentazione, gli URL di recupero e push devono essere uguali.

http://git-scm.com/docs/git-remote

comando per impostare spinta a prendere gli URL

'git remote set-url' [--push] <name> <newurl> [<oldurl>] 

Nota che l'URL spinta e l'URL fetch, anche se possono essere impostate in modo diverso, devono ancora fare riferimento alla stesso posto . Quello che hai spinto all'URL del push dovrebbe essere quello che vedresti se venissi immediatamente recuperato dall'URL del recupero. Se stai provando a recuperare da un posto (ad es. Il tuo upstream) e a passare a un altro (ad esempio il tuo repository di pubblicazione), utilizza due telecomandi separati.

Problemi correlati