Am un director pe mașina mea în care stochez toate proiectele de pe GitHub. Am deschis unul dintre ele și am făcut modificări locale pe mașina mea. Proiectul s-a încurcat și acum vreau să renunț la toate modificările pe care le-am făcut și să extrag cea mai recentă versiune din depozit. Sunt relativ nou în GitHub, folosind Git Shell.
Ar putea git pull
Trebuie să fac ceva în plus pentru a renunța la modificările făcute la nivel local?Mă poate ajuta cineva?
git reset este ceea ce vrei, dar voi adăuga câteva lucruri suplimentare pe care le-ai putea găsi utile și pe care celelalte răspunsuri nu le-au menționat.
git reset --hard HEAD
resetează modificările înapoi la ultima confirmare pe care repo-ul local a urmărit-o. Dacă ați făcut o confirmare, nu ați împins-o pe GitHub și doriți să o aruncați și pe aceea, consultați răspunsul lui @absiddiqueLive.
git clean -df
va renunța la orice fișiere sau directoare noi pe care le-ați adăugat, în cazul în care doriți să le aruncați. Dacă nu ați adăugat niciunul, nu trebuie să rulați acest lucru.
git pull
(sau dacă folosiți git shell cu clientul GitHub) git sync
va primi noile modificări de la GitHub.
Editați din cale-afară:Mi-am actualizat git shell-ul săptămâna trecută și am observat că git sync
comanda nu mai este definită în mod implicit. Pentru înregistrare, tastând git sync
era echivalent cu git pull && git push
în bash. Mi se pare încă utilă, așa că este în bashrc-ul meu.
Rulați comenzile de mai jos
git log
De aici veți obține ultima cheie hash de confirmare push commit
git reset --hard <your commit hash key>
Dacă ați comis deja modificările, atunci va trebui să faceți următoarele comenzi să reveniți la modificări.
Dacă nu ați făcut încă o confirmare, faceți o verificare curată. git checkout .
- Fiți atenți cu Revert. De multe ori este mai bine să resetați pur și simplu. Revert creează o nouă confirmare care elimină sau adaugă înapoi ceea ce a fost într-o confirmare anterioară. Totuși, aceste eliminări și „adăugări înapoi” pot cauza probleme atunci când încercați ulterior o fuziune cu o altă ramură, deoarece acestea contează ca modificări. De exemplu, dacă faceți din greșeală o modificare în ramura A, reveniți la modificarea respectivă, apoi faceți aceeași modificare în ramura B, apoi faceți push la ramura B urmată de ramura A, ramura A poate ajunge să elimine modificările pe care le-ați făcut în ramura B. -. > .
- @JDB Ahh da, mulțumesc – și eu folosesc reset în rarele cazuri în care am avut nevoie, doar că am confundat-o cu revert când am scris răspunsul – > .
În plus față de răspunsurile de mai sus, există întotdeauna metoda pământului pârjolit.
rm -R <folder>
în shell-ul Windows, comanda este:
rd /s <folder>
Apoi, puteți verifica din nou proiectul:
git clone -v <repository URL>
Acest lucru va elimina cu siguranță orice modificări locale și va extrage cele mai recente din depozitul de la distanță. Aveți grijă cu rm -R, deoarece vă va șterge datele bune dacă puneți o cale greșită. De exemplu, cu siguranță nu faceți:
rm -R /
edit: Pentru a corecta ortografia și a adăuga accent.
Pentru a împinge peste un repo vechi.git push -u origin master --force
Cred că --force
ar funcționa și pentru un pull.
- Aceasta este exact opusul a ceea ce vrea să facă OP. – > .
- „Cred că –force ar funcționa și pentru o tragere” …nu ar funcționa? – > .
git pull
este o prescurtare pentrugit fetch
urmat degit merge FETCH_HEAD
.fetch
are un--force
dar nu are nimic de-a face cu suprascrierea modificărilor din ramura curentă. Deci, deși din punct de vedere tehnicgit pull --force
este legală, nu face ceea ce credeți că face. – > .
git status
. Verifică această întrebare: stackoverflow.com/questions/36039687/… – > Por Cody.git clean -fd
dacă există și directoare care urmează să fie spulberate. – > Por Josiah Yoder.