Git deposunu əvvəlki tövsiyələrə necə qaytarmaq olar?

Müəyyən bir düzeltmeyle çəkilən bir anlıq görüntüyə qədər mövcud vəziyyətdən necə dönə bilərəm?

git log , onda aşağıdakı nəticəni alıram:

 $ git log commit a867b4af366350be2e7c21b8de9cc6504678a61b' Author: Me <me@me.com> Date: Thu Nov 4 18:59:41 2010 -0400 blah blah blah... commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4 Author: Me <me@me.com> Date: Thu Nov 4 05:13:39 2010 -0400 more blah blah blah... commit 0766c053c0ea2035e90f504928f8df3c9363b8bd Author: Me <me@me.com> Date: Thu Nov 4 00:55:06 2010 -0400 And yet more blah blah... commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50 Author: Me <me@me.com> Date: Wed Nov 3 23:56:08 2010 -0400 Yep, more blah blah. 

Noyabrın 3-dən təyinatına necə dönə bilərik, yəni. 0d1d7fc düzeltmek üçün?

6479
06 нояб. Crazy Serb tərəfindən təyin 06 Noyabr. 2010-11-06 19:58 '10 at 19:58 2010-11-06 19:58
ответ 41 cavab
  • 1
  • 2

Bu, "geri qaytarmaq" demək nə üçün çox şeydən asılıdır.

Müvəqqəti olaraq başqa bir düzəlişə keçin.

Əgər müvəqqəti olaraq ona qayıtmaq istəyirsənsə, özünüzü aldatmaq və sonra qayıtdığınız yerə qayıtmaq lazımdır, istədiyiniz hər fikri yoxlayın:

 # This will destroy any local modifications. # Don't do it if you have uncommitted work you want to keep. git reset --hard 0d1d7fc32 # Alternatively, if there work to keep: git stash git reset --hard 0d1d7fc32 git stash pop # This saves the modifications, then reapplies that patch after resetting. # You could get merge conflicts, if you've modified things which were # changed since the commit you reset to. 

Əgər qarışıqlıq yaratsaydınız, yerli dəyişikliklərinizi artıq buraxdınız, ancaq ən azı əvvəlki yerlərə yenidən qayıtmaqla geri qayıda bilərsiniz.

Yeni əməllərlə nəşr olunmuş əməlləri ləğv edin

Digər tərəfdən, bu işi dərc etsəniz, ehtimal ki, filanı yenidən qurmaq istəmirsiniz, çünki bu, hekayəni effektiv şəkildə yenidən yazır. Bu vəziyyətdə, həqiqətən, tövsiyəni geri ala bilərsiniz. Git ilə geri dönmək çox xüsusi bir mənaya malikdir: geri qaytarmaq üçün əks patch istifadə edərək bir tövsiyə yaratmaq. Yəni hər hansı bir hekayəni yenidən yazmırsınız.

git-revert maneəsi bu şərhdə həqiqətən bir çoxunu əhatə edir.  Başqa bir faydalı link git-geri dönmeyi müzakirə edən git-scm.com bölməsidir . 

Sonda qayıtmaq istəməyəcəyinizə qərar verərsənsə, əksinə (burada göstərildiyi kimi) geri qayıda bilər və ya qayıdandan əvvəl qayıtmaq (əvvəlki hissəyə bax).

Siz də bu cavabı faydalı vəziyyətdə tapa bilərsiniz:
Başını əvvəlki yerə qaytarmaq üçün necə? (Ayrı baş)

8331
06 нояб. Cavab Cascabel 06 noyabr. 2010-11-06 20:04 '10 at 20:04 2010-11-06 20:04

Sonuncu törətməyə işçi surətini qaytarın

Əvvəlki törətməyə qayıtmaq üçün hər hansı bir dəyişiklik nəzərə alınmadan:

 git reset --hard HEAD 

HEAD, mövcud iş parçacığınızdakı ən son düzəlişdir.

border=0

Əvvəlcədən törədilmiş bir işə qayıtmaq

Təqdi qayıtmaq üçün son əməldən böyükdür:

1390
21 авг. Boulder_ruby cavab Aug 21 2012-08-21 09:19 '12 at 9:19 2012-08-21 09:19

Çox çətin və təhlükəli cavablar var, amma əslində bu asan:

 git revert --no-commit 0766c053..HEAD git commit 

Bu, hər şeyi HEAD-dan bir hash əməlinə qaytaracaqdır, yəni hər bir əməlin geri qaytarıldığı kimi, iş ağacında bu tövsiyə edən dövləti yenidən qurur. Bundan sonra cari ağacınızı düzəldə bilərsiniz və bu, tamamilə yeni bir düzəldici düzəldici düzəldəcəkdir.

(Bayraq --no-commit , eyni zamanda bütün əmrləri geri qaytarmağa imkan verir - aksi hallarda tarixdə lazımsız yeni əmrlərlə ziddiyyət təşkil edən hər bir işə dair bir mesaj göndərməlisiniz.)

Bu əvvəlki halına geri dönmək üçün təhlükəsiz və asan bir yoldur . Heç bir tarix məhv edilməmişdir, buna görə artıq nəşr edilmiş əməllər üçün istifadə edilə bilər.

1355
12 февр. Cavab Yarin tərəfindən 12 Fevralda verilir . 2014-02-12 07:18 '14 at 07:18 PM 2014-02-12 07:18

Mənim üçün ən yaxşı variant və bəlkə də başqaları üçün Git sıfırlama seçimidir:

 git reset --hard <commidId>  git clean -f 

Bu mənim üçün ən yaxşı seçimdir! Sadə, sürətli və səmərəli!


Qeyd: Şərhdə qeyd edildiyi kimi, filialı köhnə əmrlərin surətini köçürən digər şəxslərlə bölüşsəniz bunu etməyin.

Həmçinin şərhlərdən daha az "ballzy" üsulunu istifadə etmək istəyirsinizsə, istifadə edə bilərsiniz

git clean -i

171
22 окт. Cavab 22 oktyabrda Pogrindis tərəfindən verilir . 2013-10-22 14:53 '13 'da 14:53 2013-10-22 14:53

Cavab verməkdən əvvəl bir az fon əlavə edin, HEAD nə olduğunu izah edin.

First of all what is HEAD?

HEAD sadəcə cari işdə (son) törətməyə istinad edir. Hər hansı bir zamanda yalnız bir HEAD ola bilər ( git worktree istisna olmaqla).

HEAD ın məzmunu .git/HEAD daxilində saxlanılır və mövcud .git/HEAD 40 baytlıq SHA-1 ehtiva edir.


detached HEAD

Sonuncu törətməni istifadə etməsəniz, bu HEAD tarixin əvvəlki törətdiyini göstərir, onu detached HEAD deyir.

2019

06 февр. Cavab CodeWizard 06 fevralda verilir. 2015-02-06 00:56 '15 at 0:56 2015-02-06 00:56

Əgər overclock etmək istəyirsinizsə, sonuncu mesajı silin və dəyişdirilmiş faylları sıraya yerləşdirin, əmrdən istifadə etməlisiniz:

 git reset --soft HEAD~1 
  • --soft faylların iş faylları kimi qeyd edilməli olduğunu göstərir - --hard .
  • HEAD~1 - sonuncu düzeltme. Əgər 3 düzəlişləri geri çəkmək istəyirsinizsə, HEAD~3 istifadə edə bilərsiniz. Müəyyən bir versiya nömrəsinə geri dönmək istəyirsinizsə, SHA-hash istifadə edərək də bunu edə bilərsiniz.

Bu, səhv bir şey etdiyiniz vəziyyətlərdə son dərəcə faydalı bir əmrdir və bu son işi ləğv etmək istəyirlər.

Mənbə: http://nakkaya.com/2009/09/24/git-delete-last-commit/

113
04 марта '14 в 20:25 2014-03-04 20:25 Cavab Stephen Ostermiller tərəfindən 04 mart 'da saat 20: 20-də verilir 2014-03-04 20:25

Git'teki yerli dəyişiklikləri geri qaytarmaq üçün bir çox yolu sınamışdım və son tövhə vəziyyətinə dönmək istəyirsən yaxşı iş görürsən.

 git add .  git checkout master -f 

Qısa təsviri:

  • git revert kimi heç bir əməl yaratmır.
  • git checkout <commithashcode> kimi git checkout <commithashcode> .
  • Bütün yerli dəyişiklikləri qüvvədə saxlayır və mövzu içərisində sonuncu törədildikdən sonra bütün əlavə faylları çıxardar.
  • Yalnız filialın adları ilə işləyir, beləliklə filialdakı son əmələ bu şəkildə qayıda bilərsiz.

Yuxarıdakı nəticələrə nail olmaq üçün daha rahat və asan bir yol tapdım:

 git add .  git reset --hard HEAD 

HEAD, mövcud iş parçacığınızdakı sonuncu təyanı göstərir.

Boulder_ruby ilə eyni kod, ancaq əlavə git add . əvvəlcədən git reset --hard HEAD əvvəl ən çox insan gözlədiyi kimi, sonuncu git reset --hard HEAD sonra yaradılan bütün yeni faylları silmək üçün git reset --hard HEAD ə git reset --hard HEAD .

103
29 июля '12 в 14:01 2012-07-29 14:01 cavab Roman Minenok 29 iyul '12 ' saat 14:01 ' də verilir 2012-07-29 14:01

Bunu aşağıdakı iki əmrlə edə bilərsiniz:

 git reset --hard [previous Commit SHA id here] git push origin [branch Name] -f 

Bu, əvvəlki Git törətməsini aradan qaldıracaq.

Dəyişikliklərinizi saxlamaq istəyirsinizsə, istifadə edə bilərsiniz:

 git reset --soft [previous Commit SHA id here] 

Sonra dəyişikliklərinizi xilas edəcək.

88
12 дек. Cavab verilir Kiran boghra 12 dekabr. 2014-12-12 09:52 '14 at 9:52 AM 2014-12-12 09:52

~/commits-to-revert.txt adlı bir mətn faylında (onları almaq üçün git log --pretty=oneline istifadə etdiyim)

 fe60adeba6436ed8f4cc5f5c0b20df7ac9d93219 0c27ecfdab3cbb08a448659aa61764ad80533a1b f85007f35a23a7f29fa14b3b47c8b2ef3803d542 e9ec660ba9c06317888f901e3a5ad833d4963283 6a80768d44ccc2107ce410c4e28c7147b382cd8f 9cf6c21f5adfac3732c76c1194bbe6a330fb83e3 fff2336bf8690fbfb2b4890a96549dc58bf548a5 1f7082f3f52880cb49bc37c40531fc478823b4f5 e9b317d36a9d1db88bd34831a32de327244df36a f6ea0e7208cf22fba17952fb162a01afb26de806 137a681351037a2204f088a8d8f0db6e1f9179ca 

Onlardan hər birini qaytarmaq üçün bir bash shell scriptini yaradın:

55
14 окт. Cavab Lance Caraccioli 14 oktyabr tərəfindən verilir . 2011-10-14 00:51 '11 at 0:51 2011-10-14 00:51

Cefromi Çözümlerine Əlavə Alternativlər

Jefromi həlləri mütləq yaxşıdır və siz mütləq onları istifadə etməlisiniz. Bununla birlikdə, tamamlama üçün, mən də bir öhdəliyin qaytarılması üçün istifadə edilə biləcək digər alternativ həllərin də göstərilməsini istəmişdim ( keçmiş işə edilən dəyişiklikləri bərpa edən yeni bir öhdəlik yaratdığınız üçün, git revert kimi).

Aydın olmaq üçün, bu alternativlər, tövsiyələrə geri dönmək üçün ən yaxşı yoldur , Cefromi həllər , amma sadəcə, bu başqa üsulları da git revert kimi eyni səviyyəyə nail olmaq üçün istifadə edə bilərsiniz.

Alternativ 1: Hard və yumşaq sıfırlama

Bu, Charles Bailey-in SHA-hash-i Git-ə geri qaytarmaq üçün həllinə bir qədər dəyişdirilmiş versiyasıdırmı ? :

52
29 июня '14 в 20:51 2014-06-29 20:51 Cavab istifadəçi456814 29 iyun 'da 20:51' də verilir 2014-06-29 20:51

Burada dəqiq birləşmədən başqa heç bir şey mənim üçün işləməyib:

 git reset --hard <commit_hash> git push origin <branch_name> --force 

Bura əsasən itələyir, fiksasiya / fiksasiya və s. Barədə heç bir əlavə mesaj vermir.

51
13 февр. cavab serdarsenay 13 feb verilir . 2018-02-13 01:40 '18 'də 1:40' də 2018-02-13 01:40 'də

Əvvəlki törətməyə qayıtmaq üçün daha asan bir yoldur (və idarəli bir vəziyyətdə olmalı, istədiyiniz hər şeyi etməlisiniz):

 git reset HEAD~1 

Belə ki, identifikatorları düzəltməyə ehtiyac yoxdur və s. :)

49
29 февр. Cavab Paul Walczewski tərəfindən 29 Fevralda verilir. 2016-02-29 11:40 '16 'da 11:40' də 2016-02-29 11:40 'də

OK, gedişdə əvvəlki bir işə geri dönmək olduqca sadədir ...

Dəyişiklikləri qeyd etmədən geri qayıdın:

 git reset --hard <commit> 

Dəyişiklikləri saxlamaq üçün geri gətirin:

 git reset --soft <commit> 

Git sıfırlama istifadə edərək, yuxarıda görüldüyü kimi, bir haşiyə ilə tez-tez istifadə olunan xüsusi bir vəziyyəti göstərmək üçün yenidən qura bilərsiniz.

Gördüyünüz kimi, fərq iki bayraqdan istifadə edir - --soft--hard , default - --soft bayrağı git reset , lakin bu, yaxşı bir tətbiqdir, həmişə bayrağı istifadə edərək, bütün bayraqları izah edirəm:


- yumşaq

Açıklandığı kimi, default bayrağının verilməməsi lazım deyil, iş ağacını dəyişdirməz, amma bütün dəyişiklik fayllarını işləməyə hazır edir, belə ki fayllara dəyişikliklər yerinə yetirilməməsi vəziyyətinə qayıdın.


- çətin

Bu bayraqla diqqətli olun, iş ağacını və bütün dəyişiklikləri izlənilən fayllara sıfırlar və hər şey arxada olacaq!


Mən də git ilə işləyərkən real həyatda baş verə biləcək bir şəkil yaratmışam:

2019

Bütün dəyişikliklərdən sonra bütün bu əmrləri yazdığınız zaman istifadə etmək olar:

 git push -f ... 

Və yalnız git push .

34
05 сент. Cavab sivi tərəfindən verilir Sep 05 2013-09-05 17:03 '13 'da 17:03' də 2013-09-05 17:03

Köhnə əmrləri qaytarmaq və yerinə yetirmək üçün xüsusi bir əmr var (Git kernelinin bir hissəsi deyil, lakin bu git-Əlavələr paketindədir):

 git back 

Kişi səhifəsində də bu kimi istifadə edilə bilər:

 # Remove the latest three commits git back 3 
32
08 авг. Cavab Shadow Man 08 aug tərəfindən verilir . 2013-08-08 21:30 '13 saat 21:30 'da 2013-08-08 21:30

Sonuncu törətməyə qayıdın və bütün yerli dəyişiklikləri görməyin:

 git reset --hard HEAD 
26
26 июля '16 в 16:13 2016-07-26 16:13 Cavab Məhəmməd İrfan Tirupattur tərəfindən 26 iyul '16' da 16:13 2016-07-26 16:13 'də verilir

Gerekli tutanağı seçin və onu yoxlayın.

 git show HEAD git show HEAD~1 git show HEAD~2 

istənilən fikrə çatana qədər. HEAD-ın bunu qeyd etməsinə məcbur etmək üçün bunu et

 git reset --hard HEAD~1 

ya da git reset --hard HEAD~2 və ya başqa bir şeydir.

25
26 февр. cavab tonythomas01 verildi 26 Fevral. 2014-02-26 15:52 '14 saat 15:52 2014-02-26 15:52

Bu ilk addımları özünüzü tamamlaya bilərsiniz və git-repoya geri qayıda bilərsiniz.

  1. git pull --all komutunu istifadə edərək, Bitbaketinizdən ən yeni versiyanı git pull --all .

  2. Gedin log əmrini terminaldan -n-4 ilə işləyin. Sonrakı nöqtə -n, yerli tarixinizdəki ən son törətmədən başlayaraq, giriş tarixinin sayını müəyyən edir.

    $ git log -n 4

  3. git reset --hard HEAD~N sıfırla - git reset --hard HEAD~N git reset --hard HEAD~N qayıtmaq istədiyiniz işlərin sayıdır. Aşağıdakı nümunədə, kafedə tarixin ən son törətdiyi bir törətməyə qoyulacaq:

  4. Bir dəyişməni məcbur etmək üçün git push --force ilə git push --force repo bir dəyişiklik basın.

Git deposunun əvvəlki törətməsini istəyirsən

 git pull --all git reset --hard HEAD~1 git push --force 
24
06 апр. Apr 06-da Nanhe Kumar tərəfindən verilmiş cavab 2017-04-06 15:20 '17 də 15:20 2017-04-06 15:20

Kodlaşdırma kataloqunu bəzi təsadüfi dəyişikliklərdən tamamilə təmizləmək üçün istifadə etdik:

 git add -A . git reset --hard HEAD 

git reset --hard HEAD dəyişikliklərdən xilas git reset --hard HEAD , ancaq "yeni" fayllardan qurtulmayacaq. Onların halında təsadüfən təsadüfi bir qovluğu təsadüfi bir şəkildə sürükləyirlər və bütün bu fayllar Git ilə yeni müalicə olundular, beləliklə, reset --hard . Gedin git add -A . əvvəldən o, hepsini Git ilə izah etdi.

19
11 окт. 11 oktyabrda Chris Moschini tərəfindən verilmiş cavab 2015-10-11 03:10 '15 at 3:10 2015-10-11 03:10

Əvvəlki törətmədən HEAD-ə dəyişikliklər saxlamaq və əvvəlki törətməyə getmək üçün aşağıdakıları yerinə yetir:

 git reset <SHA> 

HEAD-a əvvəlki törətmədən heç bir dəyişiklik tələb olunmur və sadəcə bütün dəyişiklikləri ləğv etsəniz, aşağıdakı adımları edin:

 git reset --hard <SHA> 
19
28 июля '15 в 11:35 2015-07-28 11:35 Cavab Vishnu Atrai tərəfindən 28 iyul 'da 11:35' də verilir 2015-07-28 11:35

Bu, son əməl üçün birbaşa sıfırlama üsuludur.

 git stash git stash clear 

Bu, son əməldən sonra etdiyiniz bütün dəyişiklikləri birbaşa təmizləyir.

PS: Onun bir az problemi var; həm də bütün yaxınlarda saxlanılan önbellek dəyişikliklərini də silə bilər. Hesab edirəm ki, əksər hallarda bu əhəmiyyətsizdir.

19
05 мая '16 в 14:43 2016-05-05 14:43 cavab 05 May '16 'da 14:43 2016-05-05 14:43 nöqtəsində verilir

İnanıram ki, bəzi adamlar bu suallara gəlib çıxırlar ki, geri qaytarma onların sahibində etdikləri dəyişiklikləri - yəni hər şeyi atıb yerə köçürən sahibinə necə döndüyünü bilmək istəsə və bu vəziyyətdə aşağıdakıları etsin:

 git reset --hard origin/master 

https://superuser.com/questions/273172/how-to-reset-master-to-origin-master

18
05 февр. cavab nevster 05 feb verilir . 2015-02-05 04:28 '15 'də 4:28' də 2015-02-05 04:28

Revert əmrləri yerinə yetirmək üçün bir əmrdir.

 git revert <commit1> <commit2> 

Məsələn:

git revert 2h3h23233

Aşağıda göstərildiyi kimi başdan bir sıra ala bilir. Burada 1 deyir: "Sonuncu düzəlişləri qaytarın."

git revert HEAD~1..HEAD

sonra git push

15
20 авг. Sireesh Yarlabadda tərəfindən verilən cavabı 20 Av . 2015-08-20 17:45 '15 saat 17:45 'da

Vəziyyət təcili vəziyyətdədirsə və layihənin "mənim layihəmiz" qovluğunun altında olsaydı, soruşulan sualın tez və çirkli olduğunu istəyirəm.

  • Bütün qovluğu kopyalayın və başqa bir şey adını verin, məsələn "mənim proje kopyası"

  • Var

     git reset --hard [first-4-letters> 

Sonra sisteminizdə iki versiya var ... əvvəlki törətmədən maraq və ya başqa bir şeyin fayllarını yoxlaya və ya dəyişdirə bilərsiniz. Yeni işin yaxşı olmadığına qərar verərsənsə, "layihəmiz - bir surət" altında faylları tamamilə buraxa bilərsiniz ...

Aşkar olan şey, işdən imtina etmədən layihənin vəziyyətini davam etdirmək istəyirsinizsə, bu çıxarılan işin yenidən dizininin adını dəyişməkdən ibarətdir: çıxarılan fikstürü olan layihəni silin (ya da müvəqqəti ad verin) və "mənim proyektim - surəti" adını dəyişin "layihəmizdə". Yəqin ki, tezliklə bir daha düzəldin.

Git parlaq bir quruluşdur, ancaq bunu "çarxında qaldırmaq" mümkün deyildir: bunu da izah etməyə çalışan insanlar çox vaxt digər VCS (Control System versiyası) haqqında əvvəlcədən məlumat alırlar və çox uzaqlaşırlar və digər cinayətləri törətmirlər məsələn, "yoxlama" üçün əvəzləşdirilən şərtlərdən istifadə etmək - bəzən yeni bir təcrübəni qarışdırmaq üçün demək olar ki, hesablanır.

Чтобы сэкономить много внимания, вам нужно в значительной степени прочитать книгу на Git - я бы рекомендовал "Управление версиями с помощью Git" . И если вы можете мне доверять (точнее, мои шрамы), когда я говорю "нужно", из этого следует, что вы также можете сделать это СЕЙЧАС . Значительная часть сложности Git происходит от ветвления, а затем и для ее устранения. Но из вашего вопроса нет причин, почему люди должны ослеплять вас наукой .

Особенно, если, например, это отчаянная ситуация, и вы новичок с Git!

PS: Еще одна мысль: на самом деле довольно просто сохранить репозиторий Git ( "repo" ) в каталоге, отличном от того, в котором находятся рабочие файлы. Это означало бы, что вам не пришлось бы копировать весь репозиторий Git, используя вышеуказанное быстрое и грязное решение. См. Ответ Fryer с помощью --separate- git -dir здесь . Будьте предупреждены , хотя: Если у вас есть репозиторий "отдельная директория", который вы не копируете, и вы выполняете жесткий reset, все версии, следующие за фиксацией reset, будут потеряны навсегда, если только вы не должны, как вам абсолютно необходимо, регулярно резервировать свой репозиторий, предпочтительно облако (например, Google Диск ) среди других мест.

12
ответ дан mike rodent 19 марта '15 в 20:33 2015-03-19 20:33

Revert Most Recent Commit:

 git reset --hard HEAD 

HEAD - это просто ссылка на текущую фиксацию (последнюю) в текущей ветке. В любой момент времени может быть только один HEAD .

Вернитесь к более старой команде: самым быстрым способом восстановления старой версии является использование команды reset :

 # Resets index to former commit git reset 56e05fced # Moves pointer back to previous HEAD git reset --soft HEAD@{1} # Updates working copy to reflect the new commit git reset --hard 

Это перемотает вашу ветку HEAD в указанную версию. Все фиксации, которые появились после этой версии, фактически отменены; ваш проект точно так же, как и в тот момент.

Команда reset имеет несколько опций, один из наиболее интересных - флаг --soft . Если вы используете его вместо --hard , Git сохранит все изменения в этих "отмененных" в качестве локальных изменений.

Восстановление версии в новом локальном филиале

Как сказано, использование команды сброса на вашей ветке HEAD является довольно радикальным действием: оно удалит любые коммиты (в этой ветке), которые появились после указанной ревизии. Если вы уверены, что это то, что вы хотите, все в порядке.

Тем не менее, есть также более безопасный способ, если вы предпочтете оставить свою текущую ветку HEAD нетронутой. Так как "ветки" настолько дешевы и легки в Git, мы можем легко создать новую ветку, которая начинается с этой старой версии:

 git checkout -b old-project-state 0ad5a7a6 

Обычно команда checkout используется для простого переключения ветвей. Однако, предоставляя параметр -b, вы также можете создать новую ветку (в данном примере - старое состояние проекта). Если вы не хотите, чтобы он начинался с текущей ревизии HEAD, вам также необходимо предоставить хеш-фиксацию - старую ревизию проекта, которую мы хотим восстановить.

Теперь у вас есть новый филиал с именем old-project-state, отражающий старую версию вашего проекта - без прикосновения или даже удаления каких-либо других коммитов или веток.

12
ответ дан Lyes CHIOUKH 31 авг. '18 в 14:08 2018-08-31 14:08

Попробуйте выполнить сброс до требуемого фиксации -

git reset <COMMIT_ID>

(чтобы проверить, что COMMIT_ID использует git log )

Это приведет к сбросу всех измененных файлов в состояние без добавления.

Теперь вы можете checkout все не добавленные файлы

git checkout.

Проверьте git log чтобы проверить свои изменения.

ОБНОВИТЬ

Если у вас есть одно и только сообщение в вашем репо, попробуйте

git update-ref -d HEAD

11
ответ дан optimistanoop 07 мая '17 в 2:03 2017-05-07 02:03

Внимание! Эта команда может привести к потере истории фиксации, если пользователь ошибочно допустил ошибку. Всегда имейте дополнительную резервную копию своего git где-то еще на всякий случай, если вы ошибаетесь, чем вам немного безопаснее. :)

У меня была аналогичная проблема, и я хотел вернуться к предыдущему Commit. В моем случае я не был настроен на то, чтобы сохранить новую фиксацию, поэтому я использовал Hard .

Вот как я это сделал:

 git reset --hard CommitId  git clean -f 

Это будет возвращено в локальном репозитории, здесь после использования git push -f будет обновлять удаленный репозиторий.

 git push -f 
10
ответ дан maytham-ɯɐɥʇʎɐɯ 08 янв. '18 в 17:15 2018-01-08 17:15

Поскольку ваши коммиты удаляются удаленно, вам необходимо их удалить. Позвольте мне предположить, что ваша ветка развивается, и она толкается по происхождению.

Сначала вам нужно удалить развитие из источника:

 git push origin :develop (note the colon) 

Затем вам нужно получить статус, который вы хотите, позвольте мне предположить, что хеш фиксации EFGHIJK:

 git reset --hard EFGHIJK 

Наконец, нажмите снова развернуть:

 git push origin develop 
10
ответ дан George Ninan 20 марта '17 в 10:33 2017-03-20 10:33

На GitKraken вы можете сделать это:

  1. Щелкните правой кнопкой мыши фиксацию, которую вы хотите сбросить, выберите: Сбросить на это commit/Hard:

2019

ответ дан Ângelo Polotto 02 мая '18 в 21:41 2018-05-02 21:41
  • 1
  • 2

Другие вопросы по меткам или Задайте вопрос