Știu că Git piese modificări fac la cererea mea, și ține-le până nu se fac schimbările, dar aici's unde am'm închis:
Când vreau să reveniți la o versiune anterioară a comis eu folosesc:
git reset-hard HEAD
Și Git se întoarce:
HEAD is now at 820f417 micro
Cum pot apoi reveni fișierele de pe hard-diskul la care anterior a comis-o?
Mi următorii pași au fost:
git add .
git commit -m "revert"
Dar nici unul dintre dosare s-au schimbat pe hard-disk...
Ce fac eu corect/greșit?
În primul rând, l's întotdeauna demn de remarcat faptul că git reset greu
este un potențial periculoase comanda, deoarece acesta aruncă toate modificările necomise. Pentru siguranță, trebuie să verificați întotdeauna că producția de git status
este curat (care este, gol) înainte de a utiliza.
Inițial, vă spun următoarele:
Deci, eu știu că Git piese modificări fac la cererea mea, și ține-le până nu se fac schimbările, dar aici's unde am'm închis:
Ca's incorectă. Git numai înregistrările stat de fișiere atunci când stadiul i (cu git add
) sau atunci când creați o comite. Odată ce ai'am creat o comit care a fișierelor de proiect într-un anumit stat, au're foarte sigur, dar până atunci Git's nu "schimbări de urmărire" la dosarele tale. (de exemplu, chiar dacă o faci git add
a organiza o versiune nouă a fișierului, care suprascrie anterior organizat versiune a fișierului în zona de așteptare.)
În întrebarea dumneavoastră, apoi să vă întreb următoarele:
Când vreau să reveniți la o versiune anterioară a comis eu folosesc: git reset ... e greu de CAP Și git revine: CAPUL este acum la 820f417 micro
Cum pot apoi reveni fișierele de pe hard-diskul la care anterior a comis-o?
Dacă faci git reset-hard <UNELE-COMIS - >
apoi Git va:
<UNELE-COMIS - >
.<UNELE-COMIS - >
."ȘEF" de puncte la curent ramură (sau de curent comite), deci tot ce git reset --greu de CAP
va face este de a arunca departe orice modificări neconfirmate trebuie.
Deci, să presupunem că bunul comite pe care doriți să du-te înapoi la e f414f31
. (Puteți găsi că prin git log
sau orice istorie browser.) Atunci aveți câteva opțiuni diferite în funcție de exact ceea ce vrei să faci:
git reset ... e greu f414f31
. Cu toate acestea, acest lucru se rescrie istoria de ramură, așa că ar trebui să-l evite daca'am împărtășit această ramură cu nimeni. De asemenea, se angajează ai făcut după f414f31
nu va mai fi în istorie de "maestru" ramură.f414f31
, dar adaugă că, în istorie, astfel încât să don't pierde orice istorie. Puteți face asta folosind pașii sugerat în acest răspuns - ceva de genul:git reset ... e greu f414f31 git reset-moale CAPUL@{1} git commit -m "Revenirea la starea de proiect la f414f31"
AVERTISMENT:
git curat-f
va elimina untracked fișiere, sensul ei're plecat pentru totdeauna, deoarece acestea sunt't stocate în depozit. Asigurați-vă că într-adevăr doriți să eliminați toate untracked fișierele înainte de a face acest lucru.
Încercați acest lucru și a vedea git curat-f
.
git reset greu
nu va elimina untracked fișiere, în cazul în care ca git-curat
va îndepărta orice fișiere de pe senile, directorul rădăcină, care nu sunt sub Git de urmărire.
Alternativ, ca @Paul Betts a declarat, puteți face acest lucru (feriți-vă, deși - care elimină toate ignorat dosare)
git curat-df
git curat-xdf
ATENȚIE! Acest lucru va șterge, de asemenea, ignorat fișiere