2012-03-13 12 views
8

Sto usando git svn per funzionare con un client che ha un repository svn (il nostro materiale è in github).git svn rebase è sempre in conflitto con i miei commit

Così ho seguire le istruzioni e fare un rebase git svn e quindi git svn dcommit

che ha funzionato la prima volta, ma da allora rebasing sempre in conflitto su quasi ogni commit. Sembra che non si renda conto di quali siano i miei commit e si lamenta che le cose sono in conflitto. Ogni volta che devo git rebase - passa attraverso la mia strada fino a quando non passa quelli e applica con successo i miei ultimi commit. Non capisco mai dove sono stato l'ultima volta che ho fatto un rebase (che credo sia quello che dovrebbe succedere).

Prima di tutto ... perché? Allora posso andare in giro in qualche modo?

First, rewinding head to replay your work on top of it... 
Applying: Deleting their old build management stuff as its pretty crappy. Will re-build at some point. 
Using index info to reconstruct a base tree... 
Falling back to patching base and 3-way merge... 
No changes -- Patch already applied. 
Applying: Added some error checking around Android specific calls 
Using index info to reconstruct a base tree... 
<stdin>:16: space before tab in indent. 
      Android.hideKeyboard(); 
<stdin>:31: space before tab in indent. 
        Android.launchNewAccount(); 
warning: 2 lines add whitespace errors. 
Falling back to patching base and 3-way merge... 
CONFLICT (modify/delete): src/LoginForm.js deleted in HEAD and modified in Added some error checking around Android specific calls. Version Added some error checking around Android specific calls of src/LoginForm.js left in tree. 
Auto-merging src/ChildPanel.js 
CONFLICT (content): Merge conflict in src/ChildPanel.js 
Failed to merge in the changes. 
Patch failed at 0002 Added some error checking around Android specific calls 

When you have resolved this problem run "git rebase --continue". 
If you would prefer to skip this patch, instead run "git rebase --skip". 
To check out the original branch and stop rebasing run "git rebase --abort". 

risposta

7

non so come si è arrivati ​​da soli in questa situazione, ma posso dirvi come farti fuori.

Innanzitutto, creare un nuovo ramo basato su SVN upstream: git checkout -b mynewbranch refs/remotes/oldbranch (utilizzare l'ID di riferimento git-svn qui).

Quindi, verificarlo: git checkout mynewbranch.

Infine, cherry-pick i commit dal nuovo ramo che non sono stati impegnati a SVN (qualcosa come git cherry-pick refs/remotes/oldbranch..oldbranch.

La causa più probabile dei problemi che stiamo vedendo è che si riscritto la storia dopo aver premuto una modifica a SVN, quando si utilizza git-svn per eseguire un commit, inserisce lo git-svn-idnel registro di commit, che modifica l'hash di revisione. Se si sposta il commit, si inizia a lavorare in un universo alternativo in cui le versioni SVN conflitto con quelli locali non SVN

+1

Haha. Adoro la tua linea di apertura. Darò uno scatto grazie! –

+1

Suppongo che per git-svn ref ID intendi il nome del ramo 'remotes/git-svn'? –

+1

Er ... git co non è un comando. git checkout presumo? (Solo assicurandomi che non sto usando git svn a quel punto) –

Problemi correlati