Чи є якісь недоліки для того, щоб увімкнути git rerere?


107

Я читав різні речі про повторну функцію git, і розглядаю можливість її ввімкнути. Але я не бачив, щоб хтось згадував про можливі проблеми, які можуть виникнути під час його використання. Я маю припустити, що є мінус, або він, ймовірно, буде включений за замовчуванням. То чи є якийсь недолік, щоб дозволити повторне відвідування? Які потенційні проблеми можуть викликати, які б інакше не виникли?


Коли ввімкнено автоматичне повторне повторне повторне користування та застосовується попередня роздільна здатність, чи відображається повідомлення? Якщо так, як це виглядає? ТІА!
joeytwiddle

1
@joeytwiddle, згідно з цією статтею , це буде такої форми,Resolved 'index.html' using previous resolution.
sampablokuper

Відповіді:


69

Якщо ви зробите злиття неправильно, то відкиньте його, потім знову зробіть "те саме", воно знову буде неправильним. Однак ви можете забути записану роздільну здатність. З документації :

git rerere forget <pathspec>

Це скидає вирішення конфліктів, які були зафіксовані внаслідок поточного конфлікту в Росії <pathspec>.

Будьте обережні, щоб використовувати його на конкретних шляхах; ви не хочете всюди записувати всі свої записані резолюції. ( forgetбез жодних аргументів застаріло, щоб врятувати вас від цього, якщо ви не введете git rerere forget .прямого запиту.)

Але якщо ви не думаєте цього робити, ви можете з легкістю поставити це неправильне злиття у свою історію.


13
Ось чому rerereфайли все ще залишають конфлікти, позначені як незарядженими, так що вам доведеться їх вручну додати (сподіваємось після огляду / тестування) перед тим, як зробити їх. Ви завжди git checkout -m <path>можете перевірити оригінальну конфліктну версію та переробити дозвіл, якщо потрібно.
Каскабель

1
Це мало б сенс! Здається, вам потрібен новий псевдонім.
Каскабель

5
Я думаю, це, мабуть, головне питання. Увімкнення повторної повторної роботи додає ще один спосіб помилок проникнути несподівано. Злиття, яке ви перервали (а точніше скасувати, видаливши його з історії), все-таки може повернутися до переслідування вас пізніше. В основному, він вводить другий механізм історії, ортогональний фактичному графіку історії.
Райан К. Томпсон

3
@RyanThompson Скасовані злиття не впливають на rerere. (Я часто хочу, щоб вони це зробили. Іноді я переривав злиття, тому що встановив його неправильно, тоді мені потрібно було виконати ті самі рішення, коли я його правильно встановив.) Що стосується видалення злиття з історії, чому б ти коли-небудь робив зробити це?
Marnen Laibow-Koser

40

Як згадує JC Hamano у своїй статті " Fun with rerere "

  • З повагою пам’ятає, як ви вирішили вирішити конфліктні регіони;
  • Rerere також пам’ятає, як ви торкалися поза конфліктними регіонами, щоб пристосуватися до смислових змін;
  • Rerere може повторно використовувати попередню роздільну здатність, навіть якщо ви об'єднали дві гілки з різним вмістом, ніж ту, яку ви вирішили раніше .

Навіть люди, які давно користуються rerere, часто не помічають останнього моменту.

Тож якщо ви активуєте rerereзанадто широкий контент, у вас може виникнути дивна або заплутана роздільна здатність через останню точку.


15
Суперечливим гунам все ще доводиться відповідати; їй досить складно дати хибний позитив.
Каскабель


3

Я вишня вибрав комітку (в gitk), яка містила лише двійковий файл. Cherrypick зазнав невдачі через конфлікт (це, зрозуміло, це природно), і я вирішив конфлікт, зберігаючи вишню. Пізніше я був здивований, коли виявив в іншій перезапрацьованій гілці, що мої будинки не ведуть себе - лише для того, щоб виявити, що вони не були перенесені в базу даних як (я припускаю) автоматичне вирішення конфлікту. Тож це єдиний випадок, коли я зіткнувся (з повторним увімкненням) зіткнувся з контрінтуїтивною (хоча я впевнений, цілком послідовною) поведінкою.


1
Cure:git rerere forget path/to/compiled/bin.dll
Mr_and_Mrs_D

У первісному випадку конфлікт я отримав не за вишню, а за відмову, але я не думаю, що це має значення
Mr_and_Mrs_D
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.