Қоғамдық реподағы ескі Git-ті түзетуден кері кету

Git-тің белгілі бір міндеттемелеріне қалай оралуға болады?

Біреудің маған берген ең жақсы git revert сіз қалаған тапсырмаға жетпейінше, git revert X уақытын git revert .

Сондықтан 20 жасағаным үшін 20 рет жұмыс істеуге тура келді деп айтайын.

Мұны істеудің оңай жолы бар ма?

Мен қалпына келтіруді пайдалана алмаймын, себебі бұл репозиторий ашық.

609
05 янв. Дэвид қойған 05 Қаң 2010-01-05 20:01 '10 at 20:01 2010-01-05 20:01
@ 8 жауап

Мынаны көріңіз:

 git checkout [revision] . 

мұнда [revision] - хешті орындау (мысалы: 12345678901234567890123456789012345678ab ).

Ұмытпаңыз . соңында өте маңызды. Бұл бүкіл ағашқа өзгерістер енгізеді. Бұл пәрменді гиттің жобасының түп-тамырымен іске қосу керек. Егер сіз қандай да бір ішкі каталогта болсаңыз, бұл пәрмен ағымдағы каталогтағы файлдарды ғана өзгертеді. Содан кейін адал бол, жақсы болыңыз.

Оны болдырмауға болады.

 git reset --hard 

ол жұмыс каталогынан және сатыс алаңынан барлық өзгертулерді жояды.

900
05 янв. Жауап беру Алексей Рейснер Jan 05 2010-01-05 20:07 '10 at 20:07 2010-01-05 20:07

Белгілі бір міндеттемелерді кері қайтару:

 git reset --hard commit_sha 

10 кері қайтару жұмыстары аяқталады:

border=0
 git reset --hard HEAD~10 

Тарихты қайта жазғыңыз келмесе, келесі хабардағыдай «git revert» функциясын пайдалануға болады

Git репозиторийін бұрынғы міндеттемеге қалай қайтаруға болады?

154
14 февр. 14-ші ақпанда Нага Киран жауап берді. 2013-02-14 14:01 '13-те 2:01 pm 2013-02-14 14:01

Менің ойымша, мәселе сіз «оралуды» қалай білесіз? Егер reset алмасаңыз, себебі ол жалпыға қолжетімді және сіз өзіңіздің тарихыңызды сақтамағыңыз келсе, онда сіз өзіңіздің жұмысыңыздың нақты көшірмесін көрсетуіңізді қалайсыз ба? git checkout пайдаланыңыз және хэш жасаңыз.

Өңдеу: түсініктемелерде көрсетілгендей, git checkout филиалды көрсетпестен сізді «филиалдың» жағдайы жоқ. git checkout <commit> -b <branchname> тармағын таңдаңыз немесе git checkout <commit> -b <branchname> өтіңіз git checkout <commit> . ағымдағы филиалда тексеру.

74
05 янв. 05 қаңтарда Бен жауап берді . 2010-01-05 20:04 '10 at 8:04 pm 2010-01-05 20:04

Бастапқы плакат:

Біреудің маған берген ең жақсы git revert , қалаған түзетулерге жетпейінше, git revert X рет git revert болды.

Сондықтан мен 20 міндеттеме болатын міндеттемені қайтарғым келетінін айтайын, оны 20 рет орындау керек.

Мұны істеудің оңай жолы бар ма?

Мен бұл жағдайда репо ашық.

git revert пайдаланудың қажеті жоқ X рет. git revert қайтадан аргумент ретінде тапсырма диапазонын қабылдауы мүмкін, сондықтан оны орындау ауқымын қайтару үшін оны тек бір рет пайдалану қажет. Мысалы, соңғы 20 тапсырманы қайтарғыңыз келсе:

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

HEAD~20.. белгілеу ауқымы HEAD~20.. HEAD~20..HEAD үшін қысқа және «20-шы ата-аналық HEAD~20..HEAD басталады және HEAD-ге кейін барлық бекітулерді қайтарады» дегенді білдіреді.

Бұл олардың ешқайсысы орындалмайтынын ескере отырып, соңғы 20 міндеттемені қайтарады . Егер біріктіру бар болса, оларды бір пәрменде қайтара алмайсыз, оларды жеке пайдаланудан бас тартуға тура келеді

 git revert -m 1 <merge-commit> 

Сондай-ақ, мен гитара нұсқасын 1.9.0 нұсқасымен өтіп шығуды тексердім. Егер сіз гитың ескі нұсқасын пайдаланып жүрсеңіз, git revert ауқымын пайдаланып, жұмыс істемеуі мүмкін немесе жұмыс істемеуі мүмкін.

git revert гөрі жақсы

Айта кету керек, бұл дегеніміз , git revert пайдалану , git revert шынымен сіз қайтып келген міндеттемелердің кез келгеніне қосылатын кез келген файлдарды жойып , бұл өзгерістердің ауқымын қайтарудың дұрыс жолын жасайтындығын ескеріңіз .

Құжаттама

35
21 апр. жауап 21 қыркүйек пайдаланушы456814 берген 2014-04-21 23:12 '14 at 23:12 2014-04-21 23:12

1-қадам: тапсырмалар тізімін көрсетеді:

 git log 

Сіз осы мысалдағыдай тізімді аласыз:

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

2-қадам: Кепілдік хаттамаларын көшіріп, растау үшін оны қойыңыз:

 git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f 

Не бәрі.

20
12 июля '16 в 18:27 2016-07-12 18:27 жауап Игорь 12 шілде, 18:27 18:27 2016-07-12 18:27
 git read-tree -um @ $commit_to_revert_to 

мұны жасайды. Бұл «git checkout», бірақ HEAD жаңартусыз.

Сіз сол нәтижеге қол жеткізе аласыз

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

егер сіз ыңғайлы пәрмендерді біріктіргіңіз келсе.

Олар сізді жұмыс орныңызбен және индексіңізді қалаған күйде қалдырады, сіз тек қана git commit .

8
06 февр. жауап jthill 06 ақпан. 2016-02-06 23:14 '16 at 23:14 2016-02-06 23:14

Мен не өзгергеніне сенімді емеспін, бірақ мен параметрдісіз нақты тапсырманы тексере --detach . Мен үшін жұмыс істейтін командалар: git checkout --detach [commit hash]

Өшірілген күйден оралу үшін жергілікті филиалымызды тексеру керек болды: git checkout master check check git checkout master

1
22 февр. жауап 22 ақпаннан бастап беріледі 2017-02-22 14:45 '17 сағат 14 : 45-де 2017-02-22 14:45

Мен сіздің сұрақтарыңызды түсінемін деп ойлаймын, мен оны шеше алдым. GUI шешімі жоқ болса, оны шешу үшін пәрменді пайдалануға болады және ол өте қарапайым.

1-қадам: қайтарғыңыз келетін ескі міндеттеме тегін жасаңыз.

v2.0 тегі сияқты

2-қадам: git checkout v2.0

міне, енді сіздің ЖЕТІЛДІРІҢІЗ 'v2.0' міндеттемесін көрсетеді, бірақ шебер әлі күнге дейін соңғы міндеттемені көрсетеді.

C: \ Program Files \ Git \ doc \ Git \ html \ git-checkout.html Бұл құжат сізге көмектесе алады.

немесе go <help checkout> көмекіне кіріңіз

0
02 дек. Жауап Zian Lai 02 желтоқсан. 2017-12-02 23:47 '17 сағат 23:47 2017-12-02 23:47

тегтер туралы басқа сұрақтарға немесе Сұрақ қойыңыз