Come risolvere un conflitto con git-svn?
Domanda
Qual è il modo migliore per risolvere un conflitto quando si esegue un git svn rebase
e il ramo git in cui ci si trova diventa " (no-branch) " ;?
Soluzione
Puoi usare git mergetool
per visualizzare e modificare i conflitti nel solito modo. Una volta che sei sicuro che i conflitti sono stati risolti, fai git rebase --continue
per continuare il rebase, o se non vuoi includere quella revisione fai git rebase --skip
Altri suggerimenti
Mentre esegui un git svn rebase
, se hai conflitti di unione qui ci sono alcune cose da ricordare:
1) Se succede qualcosa di brutto durante l'esecuzione di un rebase finirai su un ramo (no-branch)
.
2) Se esegui git status
, vedrai un file .dotest
nella tua directory di lavoro. Questo è sicuro da ignorare.
3) Se si desidera interrompere il rebase, utilizzare il comando seguente. 1
git rebase --abort
4) In caso di conflitto di unione:
- Modifica manualmente i file per risolvere i conflitti
- Metti in scena le modifiche con
git add [file]
- Continua il rebase con
git rebase --continuue
2- Se git chiede: " hai dimenticato di chiamare
git add
? " ;, quindi le modifiche hanno trasformato il conflitto in una modifica no-op 3 . Continua congit rebase --skip
- Se git chiede: " hai dimenticato di chiamare
Potrebbe essere necessario ripetere questo processo fino al completamento del rebase. In qualsiasi momento puoi git rebase --abort
per annullare e abbandonare il rebase.
1: non esiste alcuna opzione --abort
per git svn rebase
.
2: Non esiste l'opzione --continuue
per git svn rebase
.
3: Questo è molto strano, ma i file sono in uno stato in cui git pensa che siano gli stessi dopo quella particolare patch. La soluzione è "saltare". quella patch sul rebase.