Domanda

Ho fatto qualcosa di molto stupido. Ho effettuato un commit utilizzando Git Commit (file di file + nuovi file) (c). Poi ho fatto modificare l'ultimo commit. Quindi ho eliminato tutti i file in modo ricorsivo (!) Usando git rm -rPoi ho fatto un altro commit git (c).

A-B-C
    ↑
  master

Esiste un modo per scalare i file ma mantenere le modifiche che ho avuto nel mio primo commit? (C) Preferirei non tornare a (b). Ho provato a reset git -soft head^, quindi lo stato Git elenca i file che ho eliminato, poi ho fatto il checkout Git, ma ancora senza fortuna. Non so nemmeno se è possibile.

È stato utile?

Soluzione

Fatti un favore e non farlo git checkout <hash> Come suggerisce l'altra risposta e rischia di più problemi.

Se hai eliminato il file dalla tua directory di lavoro e non hai ancora commesso le modifiche, fai:

git checkout -f

ATTENZIONE: commetti file non impegnati prima di eseguire questo comando, altrimenti li perderai tutti

I file eliminati dovrebbero essere tornati.

In caso contrario e se riesci a trovare il commit che desideri (c, ecc. - la tua domanda non è chiara) git reflog, basta fare git reset --hard <hash from reflog> E dovresti essere tutto pronto.

Altri suggerimenti

Se ti ho capito correttamente riscrivi il commit C. Quindi il commit originale, chiamiamolo C1 non è accessibile dal tuo grafico di commit, ma è ancora lì (Git mantiene tutti i commit per un po '). Uso git reflog Per ottenere il commit hash e git checkout <hash> o un altro comando appropriato per raggiungere il vecchio stato C1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top