2010-06-30 12 views
40

Utilizzo di Chris's answer in un'altra domanda Potrei anteporre una cronologia di istantanee al mio repository git. Poiché uno dei file non fa parte della mia cronologia ma solo nelle istantanee, il primo commit originale ora contiene anche la cancellazione di questo file. Come posso annullare quello?Come annullare l'eliminazione di un file precedentemente eliminato nella cronologia di git?

In un primo momento ho pensato che questo era l'opposto di How do I remove sensitive files from git’s history, ma in realtà non voglio inserire un file nella cronologia, ma basta rimuovere la cancellazione dalla cronologia.

+1

Git non tiene intenzione, solo il contenuto. Se il file esiste in un antenato e viene rimosso in un commit figlio, quindi "rimuovi la cancellazione dalla cronologia" e "reinserisci nella storia" ammontano alla stessa cosa: assicurati che il file sia visibile nel bambino e nei suoi figli . –

risposta

42

ho capito:

git tag originalHead # just in case 
git rebase -i <id of the parent of the commit that deleted the file> 
# change pick to edit for that commit 
git checkout <id of the previous commit> <filename> # thanks for reminding, kubi 
git commit --amend 
git rebase --continue 
git tag -d originalHead 

modificare purtroppo questo lascerà tutti i tag al vecchio timeline, vedi here

+2

+1 Per rispondere a una domanda apparentemente impossibile. Wow. – hobs

68
git checkout <commit> <filename> 
+9

grazie, ma questo lo ripristina. Voglio che la cronologia sembri che il file non sia mai stato rimosso –

Problemi correlati