2010-05-25 18 views
10

La mia postazione di lavoro utilizza Subversion per il controllo del codice sorgente quindi ho giocato con git-svn per i vantaggi delle mie filiali, impegno tutte le volte che voglio senza toccare il repository principale, ecc.Git force sincronizzazione completa su master

Dato che il mio git svn checkout è locale, l'ho clonato anche a una condivisione di rete per funzionare come backup. Il mio pensiero è che se il mio desktop prende una discarica avrò almeno il repository sulla condivisione di rete per ottenere modifiche che non ho ancora avuto la possibilità di trasmettere.

Il mio flusso di lavoro è quello di lavorare dal desktop, apportare modifiche, commit, ecc. Alla fine della giornata voglio aggiornare il repository sulla condivisione di rete con tutte le mie modifiche correnti. Avevo impostato il repository sulla condivisione di rete utilizzando git clone repo_on_my_desktop e quindi aggiornando il repository sulla condivisione di rete con git pull origin master. Il problema che sto incontrando è quando ho usato fare un git rebase per squish più commit prima di dcommitting al repository svn principale. Quando faccio questo, ottengo conflitti di fusione sul repository sulla condivisione di rete quando provo a eseguire il backup di notte.

C'è un modo per sincronizzare semplicemente interamente con il repository sul mio desktop senza fare un nuovo git clone ogni notte?

risposta

8

Due osservazioni:

1/Suggerirei aventi una bare repo o un bundle (un file, più facili da trasportare) per la vostra condivisione di rete

2/avrei preferito aggiungere network_repo come un telecomando per il tuo repository desktop e spingi da lì (git push --force network_repo master): rimani nel tuo repository di lavoro.

25

Non si dovrebbe fare un rebase se si intende prelevare da un altro repository.

Se non ti dispiace ignorando i cambiamenti nella vostra condivisione di rete, si può fare questo:

git fetch origin master 
git reset --hard origin/master 

Questo resetta il maestro locale per il maestro di origine.

Attenzione: questo è un disco di ripristino, perderà tutte le modifiche (commessi * o no).

Ma suppongo che in questo caso non ci siano cambiamenti, ed è principalmente un backup.

* Nota: tecnicamente, le modifiche apportate non vengono perse finché non scadono dal reflog, ma a tutti gli effetti, vengono effettivamente perse.

+0

No, non rimuove i file estranei. – felixh

Problemi correlati