Köhnə Git'dən ictimai repoda təsbit ediləcək

Gitdə müəyyən bir işə necə dönə bilərəm?

Birinin mənə verə biləcəyi ən yaxşı cavab, istənilən törətməyə çatana qədər, git revert X dəfə dönməkdir.

Yəni mənə bildirin ki, törətməyə qayıtmaq istəyirəm, 20 əməl, mən 20 dəfə çalıştırmalıyam.

Bunu etmək daha asan bir yol varmı?

Yenidən sıfırlamadan istifadə edə bilmirəm, çünki bu verilənlər bazası açıqdır.

609
05 янв. David tərəfindən təyin edilən 05 Yanvar 2010-01-05 20:01 '10 at 20:01 2010-01-05 20:01
@ 8 cavab

Bunu cəhd edin:

 git checkout [revision] . 

burada [revision] hash işidir (məsələn: 12345678901234567890123456789012345678ab ).

Unutmayın . Sonda çox əhəmiyyətlidir. Bu, bütün ağac dəyişiklikləri tətbiq edəcək. Git layihəsinin kökündə bu komandanı çalıştırmalısınız. Hər hansı bir alt qovluqda olsanız, bu əmr yalnız mövcud dizindəki faylları dəyişir. Sonra əməl edin, yaxşı olarsan.

Bunu ləğv edə bilərsiniz.

 git reset --hard 

bütün dəyişiklikləri iş kitabçasından və səhnə sahəsindən çıxaracaq.

900
05 янв. Alex Reisner tərəfindən verilmiş cavab Jan 05 2010-01-05 20:07 '10 at 20:07 2010-01-05 20:07

Xüsusi bir tövsiyəni geri qaytarmaq:

 git reset --hard commit_sha 

Rollback 10 işlərini tamamlayır:

border=0
 git reset --hard HEAD~10 

Tarixi yenidən yazmaq istəmirsinizsə, aşağıdakı mesajda olduğu kimi, "git döndür" istifadə edə bilərsiniz

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

154
14 февр. Cavab Naga Kiran tərəfindən 14 Fevralda verilir. 2013-02-14 14:01 '13 saat 02:01 'da 2013-02-14 14:01

Bəli, mənim sualım "geri qaytarma" ilə nə deməkdir? reset , ictimaiyyətə açıqdır və tarixin qorunub saxlanılmasını istəmirsinizsə, yalnız işlədiyiniz kopyanızı xüsusi bir tövsiyəni əks etdirməsini istəmisinizmi? git checkout istifadə edin və hash əməl edin.

Düzəlişlər: şərhlərdə qeyd olunduğu kimi, bir şöbəni göstərmədən git checkout istifadə edərək, "filial yoxdur" dövlətinə aparacaqsınız. Bir şöbədə yoxlamaq və ya git checkout <commit> -b <branchname> daxil git checkout <commit> . Mövcud şöbəyə nəzarət etmək.

74
05 янв. Cavab Ben tərəfindən 05 yanvarda verilir . 2010-01-05 20:04 '10 at 8:04 pm 2010-01-05 20:04

Orijinal poster deyir:

Biri mənə verə biləcək ən yaxşı cavab, istənilən düzəlişə çatana qədər, git revert keçmək X dəfə istifadə etmək idi.

Yəni mənə deyirəm ki, törətməyə qayıtmaq istəyirəm, 20 əmrdir, mən onu 20 dəfə idarə etməliyəm.

Bunu etmək daha asan bir yol varmı?

Yenidənqurmadan istifadə edə bilmirəm, çünki bu repo ictimaiyyətə açıqdır.

git revert istifadə edilməsinə ehtiyac yoxdur X dəfə X. git revert bir sübut kimi bir sıra sıra ala bilər, belə ki, yalnız bir sıra sıra qayıtmaq üçün istifadə etmək lazımdır. Məsələn, son 20 əmrini qaytarmaq istəyirsinizsə:

 git revert --no-edit HEAD~20.. 

HEAD~20..HEAD HEAD~20.. HEAD~20..HEAD üçün HEAD~20..HEAD və "20-ci ana fiksasiya HEAD ilə başlayın və HEAD sonrasında bütün təsbitləri qaytarın" deməkdir.

Bu, son 20 əmrini geri qaytaracaq, buna görə heç biri öhdəlik götürmür. Birləşmə əmsalları varsa, hamısını bir əmrlə qaytara bilməzsiniz, fərdi olaraq onları ləğv etmək lazımdır

 git revert -m 1 <merge-commit> 

Həm də go versiyası 1.9.0 ilə git revert ilə sıra test istifadə unutmayın. Gedin köhnə bir versiyasını istifadə edirsinizsə, git revert üçün sıra istifadə edə bilər və ya işləməyəcək.

git revert daha yaxşı

Qeyd edək ki , bu git checkout fərqli olaraq, git revert istifadə edərək , git revert həqiqətən bir sıra dəyişiklikləri geri qaytarmaq üçün doğru yola çevirən hər hansı bir əmrinə əlavə edilmiş faylları siləcəkdir .

Sənədlər

35
21 апр. İstifadəçi456814 tərəfindən verilmiş cavab 21 aprel 2014-04-21 23:12 '14 at 23:12 2014-04-21 23:12

Addım 1: əməllərin siyahısı göstərilir:

 git log 

Bu nümunədə olduğu kimi bir siyahısını əldə edəcəksiniz:

 [Comp:Folder User$ git log commit 54b11d42e12dc6e9f070a8b5095a4492216d5320 Author: author <author@gmail.com> Date: Fri Jul 8 23:42:22 2016 +0300 This is last commit message commit fd6cb176297acca4dbc69d15d6b7f78a2463482f Author: author <author@gmail.com> Date: Fri Jun 24 20:20:24 2016 +0300 This is previous commit message commit ab0de062136da650ffc27cfb57febac8efb84b8d Author: author <author@gmail.com> Date: Thu Jun 23 00:41:55 2016 +0300 This is previous previous commit message ... 

Addım 2: Təqdimat xərəsini kopyalayın və doğrulama üçün yapışdırın:

 git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f 

Hamısı nədir.

20
12 июля '16 в 18:27 2016-07-12 18:27 cavab 12 İyul, '16 '18 :27 2016-07-12 18:27' də verilir
 git read-tree -um @ $commit_to_revert_to 

bunu edəcək. Bu "git checkout", lakin HEAD yeniləmədən.

Eyni təsiri ilə əldə edə bilərsiniz

 git checkout $commit_to_revert_to git reset --soft @{1} 

Birgə əmrləri birlikdə birləşdirmək istəsəniz.

İstədiyiniz vəziyyətdə işçiniz və indeksinizlə sizi tərk edirlər.

8
06 февр. cavab jthill 06 fevral. 2016-02-06 23:14 '16 saat 23:14 2016-02-06 23:14

Nə dəyişdiyinə əmin deyiləm, amma müəyyən bir --detach variantından --detach . Mənim üçün işləyən tam komanda idi: git checkout --detach [commit hash]

Bağlı vəziyyətdən dönmək üçün mənim yerli git checkout master yoxlamaq məcburiyyətindəydim: git checkout master

1
22 февр. cavab 22 fevralda Ken tərəfindən verilir 2017-02-22 14:45 '17 at 2:45 pm 2017-02-22 14:45

Hesab edirəm ki, sizin suallarınızı anlayıram, həllini tapdım. və GUI həlli yoxdur, yalnız onu həll etmək üçün əmrdən istifadə edə bilərsiniz və bu, çox sadədir.

Addım 1: Dönmek istediğiniz eski bir iş etiketi yaradın.

tag v2.0 kimi

Adım 2: git checkout v2.0

burada, indi HEAD "v2.0" işarəsini göstərir, ancaq sihirbaz hələ də sonuncu işi göstərir.

C: \ Program Files \ Git \ doc \ Git \ html \ git-checkout.html Bu sənəd sizə kömək edə bilər.

və ya go kömək <checkout> daxil edin

0
02 дек. Cavab Zian Lai verildi 02 Dekabr. 2017-12-02 23:47 '17 saat 23:47 2017-12-02 23:47

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