2010-04-15 15 views
13

Attualmente sto usando git su Windows tramite una combinazione di msysgit e Cygwin.Come posso allegare più URL a un singolo git remoto?

Ho un computer portatile che mi muovo un po ', quindi non è in una posizione coerente. Sfortunatamente, non ho un nome coerente per il fatto che il nome del computer non è stato risolto su tutte le posizioni a cui mi collego, quindi non posso semplicemente usare il nome del computer come host per l'url (es. Git:// compname/repo), quindi devo usare l'indirizzo IP.

C'è un modo per aggiungere più URL da cui estrarre un particolare telecomando? Ho visto

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

come un modo per aggiungere più URL di un telecomando, e posso vedere gli aggiornamenti nel file .git/config, ma git cerca solo di utilizzare il primo.

C'è un modo per ottenere git per provare a utilizzare tutti gli URL? Ho provato sia git fetch che git update remoto, ma nessuno dei due ha provato nulla dopo il primo url.

Nota che non ho ancora provato questo su linux e non riesco a correggere la risoluzione del nome del computer in quanto è al lavoro.

+1

Non credo che Git supporti più URL per il remoto ** ancora ** (recupera dal primo URL di risposta, spinga a tutti gli URL) , quindi devi utilizzare un solo telecomando per URL al momento. –

+1

possibile duplicato di [pull/push da più postazioni remote] (http://stackoverflow.com/questions/849308/pull-push-from-multiple-remote-locations) – RedX

+0

Vedere http://stackoverflow.com/questions/ 849308/pull-push-from-multiple-remote-locations seconda risposta – RedX

risposta

0

Suggerirei di utilizzare un altro telecomando come punto di sincronizzazione tra il laptop e altri computer che si utilizzano.

ad es. github.

Se si desidera mantenerlo privato, provare unfuddle o codaset.

+0

Mi piacerebbe essere in grado di farlo, ma avrei bisogno di configurare un server git su una finestra di Windows su un'infrastruttura IT abbastanza bloccata per rimuoverlo. Non è consentito il push su un repository al di fuori della intranet. – deterb

1

io personalmente fanno la stessa cosa, quello che ho usato è di due telecomandi

origine: posizione del mio repo quando sono a casa foriegn: posizione del mio repo quando altrove (il mio DNS redirect a casa mia)

poi spingo/tiro verso il telecomando appropriato, è un po 'caotico ma funziona.

2

penso che la tua migliore migliore è quella di impostare il telecomando URI per puntare a computername ma poi aggiungi nomecomputer al vostro file hosts (che si trova a %SystemRoot%\system32\drivers\etc\hosts):

computername 192.168.100.34 
# computername 192.168.100.68 

Quindi è possibile continuare a più voci per le diverse IP indirizzi e commenta/decommentali secondo necessità. Non c'è più confusione nel cambiare l'URI remoto su una base per repository, basta aggiornare in un unico posto e quindi tutti i repository usando il nomecomputer come l'URI useranno la nuova posizione.

+0

Non si ha accesso a etc/hosts sfortunatamente – deterb

+0

@deterb Cosa intendi per "non avere accesso? Ci dovrebbe essere l'equivalente di un file hosts indipendentemente dal sistema operativo in uso: http: //en.wikipedia .org/wiki/Hosts_% 28file% 29 # Location_in_the_file_system – IQAndreas

1

Questo approccio è ispirato alla risposta di @Mark Stickley. Funziona anche se si hanno due numeri di porta diversi (non solo nomi host) per accedere alla stessa macchina da due posizioni diverse.

È possibile mantenere più versioni di ~/.ssh/config in base al numero di situazioni.

Ad esempio, nel mio caso a casa accedo al mio server con nome host come my-fancy-server e porta come 22. In ufficio, il nome host è my-dyndns-name e il nome della porta è XXX.

Quindi ho due versioni di ~/.ssh/config. A casa, dice:

Host home 
    my-fancy-server 
    Port 22 
    User abhishek 
    IdentityFile /home/abhishek/.ssh/id_rsa 

(. Si prega di regolare egli ultimi due valori di conseguenza l'ultimo non è necessario se non si utilizzano i tasti) in ufficio, si dice

Host home 
    my-dyndns-name 
    Port XXX 
    User abhishek 
    IdentityFile /home/abhishek/.ssh/id_rsa 

Ho uno script che regola i contenuti di ~/.ssh/config quando mi sposto in una nuova posizione. Si potrebbe automatizzare anche questo scrivendo uno script che viene attivato dalle modifiche nella rete.

ho solo una remota nel mio file di configurazione git che assomiglia

[remote "origin"] 
    url = home:/path/to/repo 
    fetch = +refs/heads/*:refs/remotes/origin/* 

EDIT: ho appena scoperto che non devo fare tutto questo. Ho appena abilitato il loopback nat sul mio router e ora posso accedere in modo uniforme al mio computer usando il nome/la porta esterna. Tuttavia in molte situazioni, come una rete aziendale, il disordine con il router potrebbe non essere un'opzione

Problemi correlati