Git-да қайтадан біріктіру

Менде проблема болды: 28s Git-тің нақты тапсырмасы болды, ол мен тұтастай develop біріктірді. Менің ойымша, бұл өте тез жасалды, сондықтан біріктіруді болдырмау үшін git -revert қолданамын. Дегенмен, енді 28s ді біріктіру уақыты келді, бірақ гитте-біріктіру тобы бастапқы біріктіруді көреді және бәрі жақсы екенін және филиалдар біріктірілгенін қуана жариялайды. Қазір не істеуім керек? «Қайта құру» «қайтару» 28s → develop «» commit «? Мұны істеудің ең жақсы жолы емес деп ойлаймын, бірақ қазір кез-келген басқа адамды елестете алмаймын.

Ағаш құрылымы қандай?

128
03 июля '09 в 10:15 2009-07-03 10:15 Томс Микосс 3 шілдеде '09 сағат 10: 30-да 2009-07-03 10:15 сұрады
@ 5 жауаптар

Сіз «керісінше қайтаруыңыз керек». Мұны қалай істегеніңізге байланысты, ол оңай естілуі мүмкін. Осы бөлімдегі ресми құжатты қараңыз.

 ---o---o---o---M---x---x---W---x---Y / ---A---B-------------------C---D 

мыналарға рұқсат беру:

 ---o---o---o---M---x---x-------x-------* / / ---A---B-------------------C---D 

Бірақ барлығы жұмыс істейді ме? Әрине Сіз біріктіруді қайтара аласыз, және таза техникалық бұрыштан гитте бұл табиғи жағдай болды және ешқандай нақты қиындықтар болмады.
Ол жай ғана «мемлекет біріктіруден» «біріктіргеннен кейін» деген өзгеріс деп ойлады және бұл солай болды. Ештеңе күрделі емес, ештеңе жоқ, ештеңе қауіпті. go бұл туралы ойланбай да мұны жасайды.

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

Мүмкіндігінше, мысалы, негізгі ағашқа біріктіріп, біріктіруді қайтармау үшін қиындықтарды тапсаңыз,

  • мәселені сіз біріктіретін салаға бөліңіз және оны жөндеңіз,
  • немесе оған себеп болған жеке бекітуді қайтаруға тырысыңыз.

Ия, бұл қиынырақ, бірақ ол әрдайым жұмыс істемейді (кейде жауап: «Мүмкін, ол шынымен де дайын емес еді, себебі мен әлі де дайын емеспін, мен барлық біріктіруді тоқтатуым керек»). Сондықтан біріктіруді шынымен қайтару керек, бірақ біріктіруді қайталағыңыз келсе, енді қайтып оралу арқылы мұны істеу керек.

103
03 июля '09 в 10:35 2009-07-03 10:35 жауап J-16 SDiZ бойынша 03.07.2009 10:35 2009-07-03 10:35

Мысалы, сізде осындай оқиға бар

 ---o---o---o---M---W---x-------x-------* / ---A---B 

A, B түзете алмады және W - M қайтарады

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

 git cherry-pick -x W 

Содан кейін мен өзімнің жіпке оралуымды орындаймын.

border=0
 git revert W 

Осыдан кейін түзетуді жалғастыра аламын.

Соңғы оқиға осындай болуы мүмкін:

 ---o---o---o---M---W---x-------x-------* / / ---A---B---W---W`----------C---D 

Мен PR-ке жіберген кезде, PR-ны тоқтату және жаңа міндеттемелерді қосатыны айқын көрінеді.

29
26 марта '13 в 23:21 2013-03-26 23:21 жауапты Максим Котляр 26 наурызда сағат 13: 23-де 2013-03-26 23:21

Жұмыс үрдісін тым көп бұрау емес, керісінше:

  • Даму үшін қоқыстың жергілікті көшірмесін жасаңыз.
  • Дамудың жергілікті көшірмесіне қайтуды болдырмау
  • Осы көшірмені функцияларыңыздың бөліміне тастаңыз және сіздің go серверіңіздегі функцияларыңыздың тармағын басыңыз.

Енді сіздің функцияңыз филиалға әдеттегідей біріктірілуі керек. Мұнда жалғыз кемістігі - сіздің тарихыңызда бірнеше қосымша бірігулер / қайталанулар болады.

2
22 мая '17 в 21:32 2017-05-22 21:32 жауапты 22 мамырда 21: 32-де Сэм Дюфел жауап береді . 2017-05-22 21:32

git-revert функциясын пайдаланудың орнына git-revert сіз бұл команданы devel тармағында дұрыс емес біріктіруді жоюға (жоюға) (орнына қайтарудың орнына) тастауға болады .

 git checkout devel git reset --hard COMMIT_BEFORE_WRONG_MERGE 

Сондай-ақ ол жұмыс каталогының мазмұнын тиісінше өзгертеді. Сақ болыңыз :

  • Өзгерістерді даму саласына сақтаңыз (дұрыс емес біріктірумен), себебі олар git-reset арқылы өшіріледі. Барлығын өзгертуді дәлелдегеннен кейінгі барлық тапсырмалар жойылады!
  • Сондай-ақ, өзгертулеріңіз басқа репозитарийлерден алынған болса, бұны жасамаңыз, себебі бастапқы қалпына келтіру тарихын қайта жазады.

Мен бұны жасамас бұрын, git-reset нұсқаулықты мұқият қарастыруды ұсынамын.

Енді, қалпына келтіргеннен кейін, өзгерістерді девелге қайта енгізіп, содан кейін жасай аласыз

 git checkout devel git merge 28s 

Бұл түпнұсқа сияқты (қазір гитар тарихынан өшірілген) 28s ден де 28s нақты біріктіру болады.

2
05 июля '09 в 17:29 2009-07-05 17:29 жауап берді knweiss 05 шілде '09 в 17:29 2009-07-05 17:29

Мен осы мәселені таптым, сол мәселеге тап болдым. Мен оны қорқыныштан жоғары қалпына келтіремін деп ойлаймын. Мен ақыр соңында қалаған нәрсемді алып тастай аламын және оны қайтара алмаймын.

Оның орнына, мен түзетуді тексердім, мысалы, филиалдың қайтып оралуын қаладым. git checkout 123466t7632723 . Содан кейін ол git checkout my-new-branch бөлімшесіне ауыстырылды. Содан кейін мен бұдан былай қаламайтын тармақты алып тастадым. Әрине, егер сіз өзіңізді алдап жіберген саланы тастай алсаңыз ғана жұмыс істейтін болады.

1
13 нояб. Жауап Nicola 13 қараша. 2017-11-13 13:34 '17 в 13:34 2017-11-13 13:34