Git unisci errori


264

Ho un ramo git chiamato 9-sign-in-outcon un codice perfettamente funzionante e voglio trasformarlo nel master. Sono attualmente nel ramo principale.

$ git branch
9-sign-in-out
* master

Sto cercando di passare al 9-sign-in-outramo, ma non mi consente di:

$ git checkout 9-sign-in-out
app/helpers/application_helper.rb: needs merge
config/routes.rb: needs merge
error: you need to resolve your current index first

Qualche idea su come posso ignorare tutti gli errori del ramo principale e trasformare il 9-sign-in-outramo in principale? Forse git rebase ? Ma non voglio perdere il codice nel 9-sign-in-outramo.


Vuoi dire che non vuoi perdere il tuo codice non eseguito in 9-sign-in-out?
Mauvis Ledford,

@Mauvis: ho già eseguito il commit dei miei codici nella filiale 9-sign-in-out.
Sayanee,

Risposte:


531

Vale la pena capire cosa significano quei messaggi di errore needs mergee error: you need to resolve your current index firstindicare che l'unione non è riuscita e che ci sono conflitti in quei file. Se dopo tutto hai deciso che qualsiasi unione che stavi cercando di fare fosse una cattiva idea, puoi riportare le cose alla normalità con:

git reset --merge

Tuttavia, altrimenti dovresti risolvere quei conflitti di unione, come descritto nel manuale di git .


Una volta che hai affrontato questo con entrambe le tecniche, dovresti essere in grado di controllare il 9-sign-in-outramo. Il problema con un solo rinominare il 9-sign-in-outper master, come suggerito nella risposta di WRAR è che se hai condiviso la tua branch master precedente con nessuno, questo creerà problemi per loro, dal momento che se la storia dei due rami divergevano, ti verrà riscritto Publishing storia.

In sostanza ciò che si vuole fare è quello di unire il ramo argomento 9-sign-in-outin masterma esattamente mantenere le versioni dei file nel ramo argomento. Puoi farlo con i seguenti passaggi:

# Switch to the topic branch:
git checkout 9-sign-in-out

# Create a merge commit, which looks as if it's merging in from master, but is
# actually discarding everything from the master branch and keeping everything
# from 9-sign-in-out:
git merge -s ours master

# Switch back to the master branch:
git checkout master

# Merge the topic branch into master - this should now be a fast-forward
# that leaves you with master exactly as 9-sign-in-out was:
git merge 9-sign-in-out

1
Mark, ho finalmente capito cosa stavi dicendo dopo che ho ottenuto di nuovo l'errore da unire ora. Tuttavia, sto riscontrando questo errore ::::::::::::: Sayanee: twitter sweska $ git checkout master error: Le tue modifiche locali ai seguenti file verrebbero sovrascritte dal checkout: webrat.log Per favore, commetti le modifiche o nasconderle prima di poter cambiare ramo. Annullamento ::::::::::::::::: in qualsiasi modo, per utilizzare il webrat.log nel ramo e farlo fondere con il maestro?
Sayanee,

1
@Sayanee: questo è un errore diverso, derivante da circostanze diverse, e sarebbe meglio fare una nuova domanda a riguardo se ne sei confuso. (In breve, però, git ti impedisce di cambiare ramo poiché ciò sovrascriverebbe modifiche non webrat.log
confermate

Una volta ero solito fare tutto e rilassarmi. Ma è più bello.
sudo,

43
git checkout -f 9-sign-in-out # change branch, discarding all local modifications
git branch -M master # rename the current branch to master, discarding current master

3
Penso che sia molto più pulito ripristinare l'unione come Mark ha suggerito di seguito invece di forzare il checkout.
Thomas,

8

come suggerito in git status,

Unmerged paths:                                                                                                                                
(use "git add <file>..." to mark resolution)                                                                                                 

    both modified:   a.jl                                  
    both modified:   b.jl

Ho usato git addper finire l'unione, quindi git checkoutfunziona bene.



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.