Eclipse git checkout (aka, ripristina)


139

È possibile fare l'equivalente git checkoutall'interno di Eclipse usando il plugin EGit?

Ho un file che è stato modificato. Desidero annullare le modifiche e ripristinare il file nel repository di origine. In Subversion questo si chiama ripristino. In git l'equivalente è il checkout.

Non riesco a trovare alcuna voce di menu in Team che assomigli a checkout o ripristino. Sto usando EGit 0.6.0.


6
git fa schifo! Non ti mostrerà cosa stai per ripristinare prima di ripristinarlo. Subversion ti darà una bella finestra di conferma con un elenco dei file che stai per ripristinare. Quindi puoi scegliere quali desideri ripristinare o annullare sul posto. Peccato per il super potente idiota.
JohnPristine,

5
@JohnPristine Il plugin Eclipse git (egit) è quello che mostrerebbe una finestra di conferma, piuttosto che git stesso.
Brad Cupit,

Fare clic con il tasto destro sul file che si desidera ripristinare, quindi selezionare "Sovrascrivi". E sono d'accordo, Git fa schifo.
DhafirNz,

Nel 2016, eGit versione 4.5.0 non vedo 'Sovrascrivi'. Ora sembra essere "Sostituisci con ..." "Revisione HEAD"
Ed Randall,

Risposte:


274

Questo può essere fatto tramite il menu contestuale "Sostituisci con / File nell'indice Git" sul file nella vista pacchetto.


5
Cosa succede se il file non esiste nell'area di lavoro (ancora / non più)?
zedoo,

@zedoo Se il file non esiste, apri la vista "Git Staging", fai clic con il pulsante destro del mouse sul file eliminato nell'elenco "Modifiche non messe in scena" e seleziona "Sostituisci con revisione HEAD"
Vlasta Dolejs,

42

È possibile ottenere ciò eseguendo un ripristino (difficile). Nel menu di scelta rapida del progetto, selezionare Team> Ripristina su ..., selezionare "HEAD" e "Hard" come tipo di ripristino.

Si noti che così facendo si perderanno le modifiche di TUTTI i file. Per ripristinare solo un singolo file, vedi questa risposta .


Ho appena scoperto che anche il commit di commit fa la stessa cosa: esegue il commit di TUTTI i file anziché solo il file selezionato.
Steve Kuo,

Giusto, ma almeno puoi deselezionare i file nella finestra di dialogo di commit ... Btw: ho archiviato un bug per il reset bugs.eclipse.org/bugs/show_bug.cgi?id=295423
simon,

5
Il supporto Git in Eclipse è davvero inferiore a CVS e SVN per questo! La funzionalità "Sostituisci con le ultime da HEAD" di CVS è davvero importante per me.
kosoant,

@kosoant Eclipse può farlo anche con Git. Vedi questa risposta
Brad Cupit,

3
Chiede esplicitamente di ripristinare un file, non tutti.
Zofren,

18

nella versione Eclipse: 3.7.0

in "Sincronizzazione del team in prospettiva" -> fai clic con il pulsante destro del mouse su file / cartella nella vista di sincronizzazione -> sovrascrivi


questo è stato uno dei più facili da eseguire. Fa un popup per confermare che si desidera sovrascrivere le modifiche locali.
Karidrgn,

Ciò ha eliminato nuovi file, modifiche non messe in scena, che è quello di cui avevo bisogno.
Katu,

12

Un'altra possibilità è l'utilizzo della vista Staging Git :

  • Apri Git Staging view premendo Ctrl + 3 o Command + 3 e digitando
    staging
  • Nel caso in cui la vista non mostri già il tuo repository, fai clic sul progetto o sul file
  • Ora dovresti vedere i file che hai modificato nella sezione Modifiche non messe in scena
  • Fare doppio clic sul file non messo in scena
  • Ora vedi una vista di confronto con la tua versione a sinistra e la versione prima delle modifiche a destra

Ora, per annullare solo alcune delle modifiche nel file, procedi come segue:

  • Nella vista di confronto, seleziona una delle linee modificate
  • Selezionare la voce della barra degli strumenti Copia modifica corrente da destra a sinistra

Ciò renderà il lato sinistro corrispondente al lato destro per questa modifica. Salvare il file per terminare l'annullamento.

Per annullare tutte le modifiche:

  • Nella vista di gestione temporanea, fare clic con il tasto destro sul file non messo in scena
  • Seleziona Sostituisci con file in Git Index

È inoltre possibile selezionare più di un file non messo in scena e quindi fare clic con il tasto destro.


Mi chiedo perché questa risposta abbia ottenuto così meno voti. Preferirei segnare questo meglio; non mi sarei mai immaginato. Grazie @robinst
Duro

11

Ripristina un singolo file andando su Finestra> Mostra vista> Altro> Git Staging> Modifiche non messe in scena

Seleziona i file che desideri ripristinare. Fare clic con il tasto destro e selezionare Sostituisci con revisione HEAD

Nota che questo passaggio non può essere annullato.

(Sto usando la versione Eclipse: 3.7.2 Versione Egit 2.3.1.201302201838-r)


7

Per ripristinare , è possibile fare clic con il pulsante destro del mouse sul file / directory desiderato, quindi selezionare Sostituisci con -> Versione HEAD


Si applica a qualsiasi plugin Git in Eclipse? Ha funzionato bene con Egit.
johnnieb,

AGGIORNAMENTO: In Eclipse Mars e Luna SR2 (builtin Git) ha funzionato in questo modo.
Mag

4

Apri Team Synchronizing. Trova il file e fai clic con il tasto destro -> Sovrascrivi.

AGGIORNARE

In Eclipse Luna (4.4.2) Apri Team Synchronizing. Trova il file e fai clic con il tasto destro -> "Ripristina ..."


3

La funzionalità è in realtà lì, ma potrebbe non essere ovvio:

  • Assicurati che quickdiff sia abilitato con una revisione git e che la linea di base di quickdiff sia HEAD (questa è l'impostazione predefinita).
  • Apri il file che desideri ripristinare.
  • Seleziona tutto (Ctrl-A)
  • Fare clic con il tasto destro nella barra di QuickDIFF
  • Seleziona "Annulla selezione"
  • Salva

tra l'altro, ripristinare in git lingo significa creare un nuovo commit per ripristinare un commit precedente.


Per lavorare con quickdiff ecco una breve introduzione: wiki.eclipse.org/EGit/User_Guide/State#Quickdiff
Valentin Despa,

1

Per ripristinare l'intero file nei dati del repository:

Fai clic sulla cartella in cui desideri effettuare la revisione, quindi vai su GitStaging inserisci qui la descrizione dell'immagine

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.