Cum să renunți la modificările locale și să extragi cele mai recente din depozitul GitHub (Programare, Git, Github)

Codarea Ducesei a intrebat.
a intrebat.

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?

5 răspunsuri
Cody

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.

Comentarii

  • Nimic din toate acestea nu funcționează pentru mine, primesc: Vă rugăm să le mutați sau să le eliminați înainte de a putea fuziona –  > Por Stepan Yakovenko.
  • @StepanYakovenko sună ca și cum depozitul dvs. este în mijlocul încercării de fuziune, ceea ce ar trebui să fie indicat dacă tastați git status. Verifică această întrebare: stackoverflow.com/questions/36039687/… –  > Por Cody.
  • Trebuie să faceți git clean -fd dacă există și directoare care urmează să fie spulberate. –  > Por Josiah Yoder.
absiddiqueLive

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>

General_Twyckenham

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 .

Comentarii

  • 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. -.  > Por JDB încă își amintește de Monica.
  • @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 –  > Por General_Twyckenham.
ScottM

Î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.

Ronnie Royston

Pentru a împinge peste un repo vechi.git push -u origin master --force

Cred că --force ar funcționa și pentru un pull.

Comentarii

  • Aceasta este exact opusul a ceea ce vrea să facă OP. –  > Por JDB încă își amintește de Monica.
  • „Cred că –force ar funcționa și pentru o tragere” …nu ar funcționa? –  > Por Ronnie Royston.
  • git pull este o prescurtare pentru git fetch urmat de git 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 tehnic git pull --force este legală, nu face ceea ce credeți că face. –  > Por JDB încă își amintește de Monica.

Tags:,