2013-03-26 8 views
6

Mentre si lavora su un ramo specifico della funzione (dal ramo 'sviluppo'), ho preso l'approccio sbagliato (alcune volte: /) e in sostanza voglio eliminare tutto il mio impegno su questo ramo prima del mio impegno attuale.Come interpretare "cancellato da noi" dopo git rebase interattivo

Quello che ho fatto in questo tipo di situazione è di fare un git rebase -i development e cancellare tutti i commit prima di quello che voglio mantenere (il più aggiornato) e poi fare un push git --force per aggiornare il repository remoto per contenere solo il mio commit dorato più recente.

Dopo aver eseguito questa operazione, quando è il momento di eseguire il commit delle modifiche per questo commit di rebase, sembra che git stia rispondendo in modo un po 'strano alla mia richiesta. Ci sono alcuni file che dice

both modified:  app/helpers/statistics_helper.rb 
deleted by us:  app/models/referrals/chart.rb 
deleted by us:  app/views/statistics/_referrals.html.haml 
deleted by us:  app/views/statistics/_referrals2.html.haml 
deleted by us:  app/views/statistics/_referrals3.html.haml 

Non so come rispondere a questo. se I git add i file preceduti da "cancellati da noi" cancelleranno questi file?

risposta

1

Rimuovendo i commit è come se non fossero mai accaduti. Quindi, se hai aggiunto dei file nei commit precedenti che sono stati appena rimossi, anche questi file verranno rimossi. Questo è probabilmente mentre stai vedendo quel messaggio. Questo probabilmente rimuoverà le modifiche ai file preesistenti che avresti voluto come parte del tuo risultato finale. Penso che stai usando rebase in modo errato.

Se alla fine del tuo ultimo commit tutto è nello stato che vuoi che sia, dovresti semplicemente squash i tuoi ultimi commit. Puoi fare questo un paio di modi. Usando rebase -i come hai fatto e specificando s o squash invece di edit per tutte le linee di commit tranne il primo lo farà.

L'altro modo per farlo sarebbe:

git reset --soft HEAD~<N> 
git commit 

Dove <N> è il numero di commit indietro è necessario schiacciare.