2011-09-15 19 views
7

Ho creato un repository git locale e spingo i cambiamenti da esso per un telecomando gitosis che ho creato conCome sincronizzare master e origine/master utilizzando egit in eclissi?

git init my_git 
git remote add origin [email protected]:my_git 
... various adds and commits 
git push origin master:refs/heads/master 

Ora, posso modificare e impegno cambiamenti a livello locale in Eclipse, e quando mi impegno, vedo (usando qgit) che sposta il mio ramo master a quella versione.

Tuttavia, mi mostra anche che origin/master è alla versione precedente.

git status sulla riga di comando mi mostra tutto sia aggiornato:

$ git status 
# On branch master 
nothing to commit (working directory clean) 

posso vedere le differenze nelle versioni con

git diff origin/master 

se faccio git push sulla mia linea di comando, allora qgit spettacoli il ramo origin/master è ora nello stesso posto del mio master.

non riesco a capire come configurare il "remote/push" o "a distanza/configure spinta a monte" finestra di dialogo in Eclipse per fare la stessa cosa di una riga di comando git push per spostare il origin/master allo stesso livello il master.

Devo sempre eseguire la riga di comando push per fare in modo che origin/master raggiunga lo stesso punto di master.

Q1. Qualcuno può dirmi come farlo in Eclipse?

Q2. Qual è la versione da riga di comando di git push che non funziona nella versione di Eclipse?

Q3. I miei presupposti sono che master è il mio puntatore HEAD locale e origin/master è corretta la vista del server remoto della TESTA corrente?

+0

Il ramo 'master' nel repository gitolite viene aggiornato quando si preme da Eclipse, tuttavia? –

+0

sì, sembra che sia aggiornato. Ho fatto una spinta da Eclipse e poi clonato il repository gitolite altrove e le modifiche apportate sono nel mio nuovo clone. il 'origine/master' è ancora impostato sulla versione precedente, quindi mi dice che la spinta funziona e' origine/master' non è l'HEAD del server remoto. Il nuovo clone ha "master", "origine/master" nell'ultima versione, ma anche un "origine/origine/master" nella versione precedente –

+1

Che hai un 'origine/origine/master' nel nuovo clone mi suggerisce che in qualche modo hai spinto accidentalmente 'origin/master' (anziché solo' master') in un nome corrispondente nel repository gitolite. –

risposta

2

Andando dalla parte pertinente della egit's documentation è possibile:

  • scatti "aggiungono tutti i rami spec" pulsante, per spingere tutte le sedi locali a quelli con lo stesso nome nel repository remoto, o
  • (l'opzione molto più sicuro) basta selezionare master sotto sia "ref Source" e "ref destinazione" per solo spingere il vostro master ramo

il ramo a distanza-tracking origin/master di solito è aggiornato da git fetch (che fa parte di ciò che fa git pull), ma con la riga di comando git, il ramo di localizzazione remota è anche aggiornato su una push riuscita al ramo nel repository remoto che viene tracciato. È possibile che Egit, essendo basato su una delle purissime implementazioni Java di git, JGit, anziché sugli strumenti da riga di comando, non aggiorni origin/master su una push riuscita nello stesso modo. In questo caso, è sufficiente aggiornare do a fetch per origin/master.


Aggiornamento: Sembra che questo è un bug conosciuto in EGit (non il JGit sottostante) - la segnalazione di bug è qui:

+0

Eccellente, il recupero ha fatto il trucco. Penso di capire perché devo recuperare localmente il 'origine/master' adesso, sarebbe una caratteristica o un bug? Mi sarei aspettato di sapere localmente dove si trova il master remoto se fossi stato io a spingerlo a cambiarlo, il fatto che devo richiederlo in una seconda fase sembra strano, e la linea di comando sta facendo quello che ho d più naturalmente aspettarsi di accadere. –

+0

Sì, mi aspetterei lo stesso, e lo chiamerei un bug. In effetti, ho appena trovato questo nel bug tracker: https://bugs.eclipse.org/bugs/show_bug.cgi?id=317411 –

1

Un aggiornamento questo, stavo usando Eclipse Helios, e ho aggiornato ad Indigo, con l'ultima versione di egit, e la correzione sembra essere attiva, dato che non devo più tirare dopo una spinta.

+0

Hmm, io uso Kepler e ho repo locale "L1" e anche remoto nuda repo "R1" su un'altra partizione del disco. Inoltre ho fatto un clone nudo "P" di R su una pendrive. Su un altro computer ho fatto un clone "R2" di P e poi estraggo il modulo di progetto R2 in Eclipse usando il repository "L2". Fondamentalmente server per scambiare le modifiche tra due computer con l'aiuto di pendrive e con i backup nudi su entrambi i computer. Sembra questo: – Cromax