2011-09-17 15 views
5

Ho l'origine remota impostata come diramazione predefinita per il ramo corrente. Ho anche un telecomando a monte che non è l'impostazione predefinita per il ramo. C'è un modo per configurare un ramo predefinito sul telecomando, quindi quando lo prendo di default su quel ramo?specificare il ramo predefinito per un telecomando non predefinito per pull

Ecco il mio .git/config:

[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     url = [email protected]:studgeek/knockout.git 
[branch "gh-pages"] 
     remote = origin 
     merge = refs/heads/gh-pages 
[remote "upstream"] 
     url = git://github.com/SteveSanderson/knockout.git 
     fetch = +refs/heads/*:refs/remotes/upstream/* 
     merge = refs/heads/gh-pages 

Con questo posso felicemente effettuare le seguenti operazioni e il valore di default per origin/gh-pages

git pull 

Quello che vorrei fare è solo dare il remoto upstream e farlo capire il ramo (gh-pages) parte così

git pull upstream 

piuttosto di questo

git pull upstream gh-pages 

In questo momento ho il seguente se tralascio il ramo:

$ git pull upstream 
You asked to pull from the remote 'upstream', 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. 

posso vedere tre diversi modi di inadempiente che avrebbe funzionato per me nella mia situazione attuale, ma sono non sono sicuro di come fare nessuno di loro :): * Usa il ramo corrente come predefinito sull'upstream remoto * Indica un ramo predefinito per il remoto upstream per il ramo corrente (lasciando l'origine il ramo predefinito) * Indica un ramo predefinito sul telecomando. Il pericolo qui ovviamente se cambio rami il ramo upstream di default rimane lo stesso. Nel mio caso andrebbe bene, ma posso vedere quella gente che brucia che non se lo aspettava.

Nota specifying git branch for remote fa una domanda simile, ma la soluzione richiede di fare una delle due cose che non vogliamo fare: cambiare il telecomando predefinito o elencare esplicitamente il ramo (vogliamo codificare questo per evitare errori manuali).

risposta

4

In .git/config, è possibile fornire le informazioni. Esempio se si è nel ramo foo e si vuole tirare in remoto da moo

[branch "foo"] 
    remote = origin 
    merge = refs/heads/moo 

La prossima volta che si esegue git pull nel ramo foo, tirerà da moo.

Questo è stato coperto in StackOverflow =>How do you get git to always pull from a specific branch?

+4

questo non risponde alla domanda, dal momento che questo funziona solo per l'impostazione predefinita a distanza (origine)! – Noldorin

Problemi correlati