2012-10-18 8 views
6

Il mio repository git locale deve prelevare da un server. È quindi necessario trasferire un ramo specifico a un repository di revisione con un nome di ramo diverso su un server diverso.Come impostare un ramo git per passare a un remoto con un nome di ramo diverso e passare da un URL completamente diverso

Qualcosa di simile: tirare tutto da PullOnlyRepo su Server1 (che chiameremo tale origine forse?) spinta Branch hotfix per ReivewRepo con il nome ramo JistChanges su Server2.

In questo momento git config mostra -l:

remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* 
remote.origin.url=<URL for Server1> 
remote.origin.pushurl=no_push (this shouldn't matter since it is a pull only repo) 
branch.production.remote=origin 
branch.production.merge=refs/heads/production 
remote.review.url=<URL for Server2> 
remote.review.fetch=+refs/heads/*:refs/remotes/review/* 

git pull fa quello che voglio (prelevo modifiche dal posto giusto sul Server1 e li fonde in mio albero di lavoro).

Tuttavia git push no. Al fine di ottenere ciò che voglio che devo fare

git push review hotfix:JistChanges 

C'è qualche modo per rendere git tirare fare questo senza dover mettere in materiale extra?

Ci sono già alcune domande là fuori che impostare in modo che il ramo locale spinga verso un remoto con un nome di ramo diverso. Tuttavia cambiano anche il monte e da dove viene il tiro.

+0

In quale versione sei? Ci sono un sacco di variabili di configurazione ... –

+0

Sono in versione 1.7.4.1 – Jistanidiot

risposta

3

è possibile impostare il ramo upstream per hotfix:

git config push.default upstream 
git config push.default review 
git branch --set-upstream hotfix review/JistChanges 

Vedi "How do you make an existing git branch track a remote branch?" Vedere "What is the result of git push origin?" sul criterio predefinito push (che presto saranno "simple")

git1.8.0 partire :

git branch -u review/JistChanges hotfix 

Il OP jistanidiotreports aver raggiunto lo stesso risultato con: la risposta di

git remote set-url --push origin 
git config remote.origin.push refs/heads/hotfix:JistChanges 
+0

Sul ramo git Revisione dell'hotfix --set-upstream/JistChanges Ottiene un errore: errore: Valore non valido per push.default: revisione errore: Deve essere uno di niente, corrispondente, tracciamento o corrente. fatale: file di configurazione errato riga 19 in .git/config – Jistanidiot

+0

@Jistanidiot è possibile impostarlo su 'matching' o' upstream' (http://stackoverflow.com/q/12294787/6309). – VonC

1

Ok VonC mi ha fatto sulla strada giusta. Ecco cosa ho fatto:

git remote set-url --push origin <review repo URL> 
git config remote.origin.push refs/heads/hotfix:JistChanges 

L'unico problema con questo è che ora tutto spinge al repository di revisione. Per ora va bene dal momento che il 90% del lavoro sarà in questo ramo. L'altro 10% posso semplicemente fare un altro push dove altro lo stesso repository di origine con la configurazione push corretta.

+0

Eccellente, +1. Ho aggiornato la risposta per riflettere la tua. – VonC