Ho accidentalmente scartato le mie modifiche sui file nel mio albero di lavoro locale tramite git checkout. I file non sono in scena in questo momento. È possibile "annullare" questo checkout?
Ho accidentalmente scartato le mie modifiche sui file nel mio albero di lavoro locale tramite git checkout. I file non sono in scena in questo momento. È possibile "annullare" questo checkout?
Risposte:
Credo che se un file viene modificato ma non ancora aggiunto (messo in scena), è puramente "privato".
Significa che non può essere ripristinato da GIT se sovrascritto con l'indice o la versione HEAD (a meno che tu non abbia una copia del tuo lavoro attuale da qualche parte). "
Un contenuto "privato" è visibile solo nella directory corrente, ma non è registrato in alcun modo in Git.
git checkout --
), mi aspetto che sia in grado di annullare quell'operazione, magari tramite reflog
. È un'aspettativa sbagliata?
git checkout folders/subfolders/file
ma premere invio per sbaglio dopo aver ottenuto folder
e perso tutto il mio lavoro. / è a 1 cm da invio sulla mia tastiera e passo spesso da una macchina all'altra con diversi layout di tastiera, quindi ci sono spesso 10-15 minuti delle mie dita per abituarmi a nuove posizioni. Difficile credere nel 2018 che git cestinasse i file anche se nel libro git dice che git fa del suo meglio per non perdere lavoro.
Se si utilizza un IDE "professionale" è probabile che sia possibile ripristinare i file da una cronologia locale. In Rubymine, ad esempio, puoi fare clic con il pulsante destro del mouse sui file e guardare una cronologia delle modifiche indipendenti dalle modifiche git, salvatemi alcune volte ora ^^
Se stai lavorando in un editor come Sublime Text e il file in questione è ancora aperto, puoi premere ctrl + z e tornerà allo stato precedente al checkout di git.
Purtroppo le tue modifiche sono perse. Le tue modifiche private vengono semplicemente sovrascritte. Se non lo hai fatto git stash
prima di effettuare il checkout ...
Prendilo dal lato più luminoso: ora puoi implementare le cose ancora meglio;)
Controlla la cronologia locale nel tuo IDE.
Sviluppando su OS X? Utilizzando Xcode? Probabilmente sarai fortunato!
Come descritto in un commento di qungu , OS X mantiene una cronologia delle versioni salvata automaticamente dei file, anche se non si utilizza Time Machine .
Quindi, se hai spazzato via le modifiche locali non messe in scena con una negligenza git checkout .
, ecco come probabilmente puoi recuperare tutto il tuo lavoro.
Se qualcuno scopre che questo thread ha distrutto del lavoro in XCode, c'è un modo per ottenere la cronologia di AutoSave. XCode stesso non ha una voce di menu per vedere la cronologia di AutoSave, ma la memorizza. Se si aprono i file in questione in TextEdit, è possibile ripristinare e consultare la cronologia di AutoSave in File> Ripristina.
Il che è fantastico, e recuperato circa una giornata di lavoro per me, ieri.
Potresti chiedere: "Perché l'interfaccia utente da riga di comando git non è la prima VCS utilizzata per l'ingegneria del software2016 2017 20182019, almeno il backup dei file prima di spazzarli via? Come, sai, strumenti software ben scritti per circa gli ultimi tre decenni ".
O forse chiedi "Perché questa funzionalità di cronologia dei file incredibilmente fantastica è accessibile in TextEdit ma non in Xcode dove ne ho effettivamente bisogno?"
... ed entrambi, credo, ti parleranno molto del nostro settore. O forse andrai a riparare quegli strumenti. Quale sarebbe super.
Model
sfortunatamente
In VSCODE ctrl + z (annulla) ha funzionato per me
L'ho fatto git checkout .
invece digit add .
e tutte le mie modifiche ai file sono state perse.
Ma ora usando command + z
nel mio mac, ho recuperato le modifiche e salvato un tono di lavoro per me.
Nel caso in cui tu abbia mai nascosto le modifiche in precedenza (ad esempio, prima della riformulazione), questo probabilmente ti aiuterà
Come recuperare una scorta abbandonata in Git?
anche se hai già 'nascosto' le modifiche.
Un salvatore efficace per questo tipo di situazione è Time Machine (OS X) o un sistema di backup simile basato sul tempo. Mi ha salvato un paio di volte perché posso tornare indietro e ripristinare solo quel file.
Mi è appena successo, ho controllato un'intera cartella contenente ore di lavoro! Fortunatamente ho scoperto che il mio IDE Netbeans mantiene una cronologia di ogni file, il che mi ha permesso di recuperare il 99% delle cose anche se avevo bisogno di sistemare alcune cose manualmente.
Normalmente ho tutto il mio lavoro in una cartella dropbox. Questo mi assicura che avrei la cartella corrente disponibile al di fuori del mio computer locale e Github. Penso che sia il mio altro passo per garantire un "controllo della versione" diverso da Git.Puoi seguire questo per ripristinare il tuo file alle versioni precedenti dei tuoi file dropbox
Spero che questo ti aiuti.
Tecnicamente sì. Ma solo in alcuni casi. Se ad esempio hai la pagina del codice in alto e fai clic su Git Checkout e ti rendi conto che hai accidentalmente verificato la pagina sbagliata o qualcosa del genere. Vai alla pagina e fai clic su Annulla. (per me, comando + z), e tornerà esattamente dove eri prima di colpire il buon vecchio checkout git.
Questo non funzionerà se la tua pagina è stata chiusa e quindi fai clic su Git Checkout. Funziona solo se la tabella codici attuale è aperta
Se si lavora con un / terminale cmd pronta aperto, e utilizzato tutti i comandi Git che avrebbe mostrato i cambiamenti unstaged ( diff
, add -p
, checkout -p
, ecc), e non hanno chiuso il / cmd terminale pronta da quando, troverete i cambiamenti unstaged sono ancora disponibili se scorri verso l'alto fino a dove hai eseguito i comandi git summenzionati.
Tipo,
diciamo che sei un ragazzo molto fortunato proprio come lo sono stato io, torna al tuo editor e fai un annullamento (comando + Z per mac), dovresti vedere i tuoi contenuti persi nel file. Spero che ti abbia aiutato. Naturalmente, questo funzionerà solo per i file esistenti.
Forse le tue modifiche non vanno perse. Controlla "git reflog"
Cito l'articolo qui sotto:
"Fondamentalmente ogni azione che esegui all'interno di Git in cui sono archiviati i dati, puoi trovarli all'interno del reflog. Git si impegna davvero a non perdere i tuoi dati, quindi se per qualche motivo pensi che abbia, è probabile che tu possa scavarli usando git reflog "
Vedi i dettagli:
http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html
git reflog
qui, ho trovato questa risposta mentre cercavo di annullare un git checkout HEAD .
- Avevo intenzione di digitare git reset HEAD .
- Avevo appena fatto un 'git reset --soft HEAD ~ 1' e non lo sapevo circa git reflog
così ho potuto riprendere il lavoro che avevo fatto :)