'Git sıfırlama - HEAD' ə əvvəlki tövsiyəyə qayıtmaq üçün necə istifadə etməli?

Mən bilirəm ki, Git mənim tətbiq etdiyim dəyişiklikləri izləyir və dəyişikliklər etməyimə qədər onları saxlayır, amma bura asdığım yer:

Əvvəlki törətməyə qayıtmaq istədiyim zaman istifadə edirəm:

 git reset --hard HEAD 

Və gediş qaytarır:

 HEAD is now at 820f417 micro 

Daha sonra faylları sabit diskimdəki əvvəlki tövsiyələrə necə qaytarıram?

Sonrakı addımlarım:

 git add . git commit -m "revert" 

Lakin sabit diskimdə faylların heç biri dəyişməyib ...

Doğru / səhv nə edirəm?

735
02 марта '12 в 9:36 2012-03-02 09:36 Brian McDonough tərəfindən təyin olunan 02.03.2012 09:36 saat 09:36 'da
@ 2 cavablar

Hər şeydən əvvəl, hər git reset --hard lazımdır ki, git reset --hard təhlükəli bir əmrdir, çünki bütün dəyişməz dəyişikliklərinizi ləğv edir. Təhlükəsizlik səbəblərindən istifadə etməzdən əvvəl həmişə git status çıxışının təmiz olduğunu (yəni boş olduğundan) əmin olmalısınız.

Əvvəlcə deyirsiniz:

Beləliklə, mən bilirəm ki, mənim ərizədəki dəyişiklikləri izləyir və dəyişikliklər edəcəyəm, amma burada qaldığım yer qüvvədə qalır:

Bu səhvdir. Git yalnız onları qoyduğunuzda faylların vəziyyətini qeyd edin ( git add ) və ya bir öhdəlik yaratdığınızda. Layihə fayllarınızın müəyyən bir vəziyyətdə olduğuna dair bir öhdəlik yaratdıqdan sonra, onlar çox təhlükəsizdir, lakin Git bu günədək fayllarındakı dəyişiklikləri izləmədi. (Məsələn, bir faylın yeni bir versiyası yaratmaq üçün git add etsəniz, hazırlıq sahəsindəki bu faylın əvvəlcədən hazırlanmış versiyasını əvəz edəcəkdir.)

Sualınızdan sonra aşağıdakıları soruş:

Əvvəlki tövsiyəyə geri dönmək istəmirəm, mən istifadə edirəm: sıfırlama sıfırlama - HEAD HEAD And go returns: HEAD artıq 820f417 micro

Daha sonra fayllarımı sabit diskimdəki əvvəlki tövsiyələrə necə qaytarıram?

git reset --hard <SOME-COMMIT> sonra Git olacaq:

  • Cari filialınızı (adətən master ) <SOME-COMMIT> nöqtəsinə <SOME-COMMIT> .
  • Daha sonra, faylları iş ağacınızdakı və indeksinizdə ("sahə sahəsi") " <SOME-COMMIT> sabitlənmiş versiyalarla eyni olun.

HEAD cari şöbəyə (və ya cari tövsiyə) git reset --hard HEAD , buna görə də hər şey git reset --hard HEAD bütün dəyişməz dəyişikliklərinizi git reset --hard HEAD .

Beləliklə, geri dönmək istədiyiniz yaxşı bir əmr f414f31 . (Siz git log və ya hər hansı bir tarixi brauzerdən tapa bilərsiniz). Sonra nə etmək istədiyinizdən asılı olaraq bir neçə müxtəlif seçim var:

  • Bunun əvəzinə, mövcud filialı köhnə bir işi göstərmək üçün dəyişdirin. Bunu git reset --hard f414f31 ilə edə bilərsiniz - git reset --hard f414f31 . Bununla belə, bu sizin mövzu tarixini yenidən yazır, buna görə də bu mövzuyu hər kəslə bölüşsəniz, onu qaçınmaq lazımdır. Əlavə olaraq, f414f31 sonra f414f31 sizin master f414f31 olmayacaqdır.
  • f414f31 ilə eyni layihə statusunu təmsil edən yeni bir öhdəlik yaradın, ancaq f414f31 , sadəcə hekayə əlavə edir. Bunu bu cavabda göstərilən addımlardan istifadə edə bilərsiniz - bir şey kimi:

     git reset --hard f414f31 git reset --soft HEAD@{1} git commit -m "Reverting to the state of the project at f414f31" 
846
02 марта '12 в 11:32 2012-03-02 11:32 Cavab Mark Longair tərəfindən 02 Mart 2012, saat 11:32 'də verilir. 2012-03-02 11:32

XƏBƏRDARLIQ: git clean -f saxlanılmayan faylları silməyəcəkdir, yəni onlar abadlıqda itirdilər, çünki onlar depoda saxlanmırlar. Bunu etmədən əvvəl bütün icazəsiz faylları silmək istədiyinizdən əmin olun.


Bunu cəhd edin və git clean -f .

border=0

git reset --hard izlənilməmiş faylları silkələməsə, git-clean Git izlənməsinin altında olmayan izlənilən kök dizindəki faylları siləcək.

Alternativ olaraq, @Paul Betts dediyi kimi, bunu edə bilərsiniz (lakin ehtiyatlı olun - bu da bütün görülən faylları rədd edir)

  • git clean -df
  • git clean -xdf DİKKAT! Bu da qeyri-qanuni faylları siləcəkdir.
170
02 марта '12 в 9:48 2012-03-02 09:48 cavab 02 fevral '12 saat 09:48 'da verildi 2012-03-02 09:48

etiketləri ilə bağlı digər suallar və ya bir sual