Это команда git-rerere, которую можно запустить в провайдере бесплатного хостинга OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
git-rerere - повторно использовать записанное разрешение конфликтующих слияний
СИНТАКСИС
мерзавец повторно [Очистить|забывать |Разница|осталось|статус|gc]
ОПИСАНИЕ
В рабочем процессе с относительно долгоживущими тематическими ветками разработчик иногда
необходимо разрешать одни и те же конфликты снова и снова, пока ветки темы не будут завершены
(либо слиты с веткой «релиз», либо отправлены и приняты восходящим потоком).
Эта команда помогает разработчику в этом процессе, записывая конфликтующее автоматическое объединение.
результаты и соответствующие результаты ручного разрешения при первоначальном слиянии вручную и применение
ранее записанные разрешения рук и соответствующие им результаты автоматического слияния.
Внимание
Вам необходимо установить переменную конфигурации rerere.enabled, чтобы включить это
команда.
КОМАНДЫ
Как правило, мерзавец повторно запускается без аргументов или вмешательства пользователя. Однако у него есть
несколько команд, которые позволяют ему взаимодействовать с его рабочим состоянием.
Очистить
Сбросьте метаданные, используемые rerere, если разрешение слияния должно быть прервано. Вызов мерзавец
am [--skip | --abort] or мерзавец перебазировать [--skip | --abort] автоматически вызовет это
команда.
забывать
Сбросьте разрешения конфликтов, которые rerere записал для текущего конфликта в
.
Разница
Отображение различий для текущего состояния разрешения. Это полезно для отслеживания того, что
изменилось, пока пользователь разрешает конфликты. Передаются дополнительные аргументы
прямо в систему Разница команда установлена в PATH.
статус
Печатать пути с конфликтами, которые будут записаны при повторном разрешении слияния.
осталось
Печатать пути с конфликтами, которые не были автоматически разрешены при повторной перезагрузке. Это включает
пути, разрешение которых не может быть отслежено rerere, например конфликтующие подмодули.
gc
Удалите записи о конфликтующих слияниях, произошедших давным-давно. По умолчанию,
неразрешенные конфликты старше 15 дней и разрешенные конфликты старше 60 дней
обрезанный. Эти значения по умолчанию контролируются через gc.rerereUnresolved и
gc.rerere - разрешенные переменные конфигурации соответственно.
ОБСУЖДЕНИЕ
Когда ваша тематическая ветка изменяет перекрывающуюся область, которую ваша основная ветка (или восходящая ветвь)
затронуты, так как ваша тематическая ветка разветвляется от него, вы можете протестировать его с помощью последней
master, даже до того, как ваша тематическая ветка будет готова к отправке вверх по течению:
о --- * --- о теме
/
o --- o --- o --- * --- o --- o мастер
Для такого теста нужно как-то объединить мастер и тему. Один из способов сделать это - потянуть
master в ветку темы:
Тема $ git checkout
$ git мастер слияния
о --- * --- о --- + тема
/ /
o --- o --- o --- * --- o --- o мастер
Коммиты, отмеченные *, касаются одной и той же области в том же файле; вам нужно решить
конфликты при создании коммита, отмеченного знаком +. Затем вы можете проверить результат, чтобы сделать
убедитесь, что ваша незавершенная работа все еще работает с последней версией мастера.
После этого тестового слияния есть два способа продолжить работу над темой. Самый легкий
состоит в том, чтобы построить поверх тестового слияния commit +, и когда ваша работа в тематической ветке
наконец, готово, перетащите ветку темы в мастер и / или попросите восходящий поток вытащить из
ты. К тому времени, однако, ведущий или вышестоящий мог быть продвинутым, так как
test merge +, и в этом случае окончательный график фиксации будет выглядеть так:
Тема $ git checkout
$ git мастер слияния
$ ... работать как с тематической, так и с основной ветками
$ git мастер проверки
Тема слияния $ git
o --- * --- o --- + --- o --- o тема
// \
o --- o --- o --- * --- o --- o --- o --- o --- + master
Однако, когда ваша тематическая ветка является долгоживущей, в вашей тематической ветке будет много
такое "Merge from master" фиксируется на нем, что излишне загромождает разработку
история. Читатели списка рассылки ядра Linux могут помнить, что Линус жаловался на
такие слишком частые тестовые слияния, когда сопровождающий подсистемы просил вытащить из ветки полную
"бесполезных слияний".
В качестве альтернативы, чтобы очистить ветку темы от тестовых слияний, вы можете удалить
тестовое слияние и продолжайте строить поверх подсказки перед тестовым слиянием:
Тема $ git checkout
$ git мастер слияния
$ git reset --hard HEAD ^; # перематываем тестовое слияние
$ ... работать как с тематической, так и с основной ветками
$ git мастер проверки
Тема слияния $ git
o --- * --- o ------- o --- o тема
/\
o --- o --- o --- * --- o --- o --- o --- o --- + master
Это оставит только одну фиксацию слияния, когда ваша тематическая ветка, наконец, будет готова и объединена.
в главную ветку. Это слияние потребует от вас разрешения конфликта, представленного
коммитами, отмеченными *. Однако этот конфликт часто совпадает с конфликтом, который вы
разрешено, когда вы создали тестовое слияние, которое вы взорвали. мерзавец повторно поможет вам решить эту проблему
окончательное конфликтное слияние с использованием информации из вашего предыдущего решения.
Запуск мерзавец повторно команда сразу после конфликтующего автослияния записывает
конфликтующие файлы рабочего дерева с обычными маркерами конфликтов <<<<<<<, ======= и
>>>>>>> в них. Позже, когда вы закончите разрешать конфликты, запустите мерзавец повторно
снова запишет разрешенное состояние этих файлов. Предположим, вы сделали это, когда создали
тестовое слияние мастера в тематическую ветку.
В следующий раз, увидев такое же конфликтующее автоматическое объединение, запустится мерзавец повторно выполнит
трехстороннее слияние между ранее конфликтующим автоматическим слиянием, более ранним ручным разрешением,
и текущее конфликтное автослияние. Если это трехстороннее слияние разрешается чисто, результат
записывается в ваш рабочий файл дерева, поэтому вам не нужно вручную разрешать его. Примечание
которая мерзавец повторно оставляет индексный файл в покое, поэтому вам все равно нужно выполнить окончательную проверку работоспособности
проверяет с помощью git diff (или git diff -c) и мерзавец добавить когда вы будете удовлетворены.
В качестве меры удобства мерзавец слияние автоматически вызывает мерзавец повторно при выходе с
неудачное автоматическое слияние и мерзавец повторно записывает решение руки, когда это новый конфликт, или
повторно использует предыдущее разрешение руки, когда это не так. мерзавец совершать также призывает мерзавец повторно когда
фиксация результата слияния. Это означает, что вам не нужно делать ничего особенного.
самостоятельно (помимо включения переменной конфигурации rerere.enabled).
В нашем примере, когда вы выполняете тестовое слияние, ручное разрешение записывается, и оно будет
можно повторно использовать, когда вы выполните фактическое слияние позже с обновленными главными и тематическими ветками, как
до тех пор, пока сохраняется записанное разрешение.
Информация мерзавец повторно записи также используются при запуске мерзавец перебазировать. После продувания
прочь тестовое слияние и продолжение разработки по тематической ветке:
o --- * --- o ------- o --- o тема
/
o --- o --- o --- * --- o --- o --- o --- o мастер
$ git rebase главная тема
o --- * --- o ------- o --- o тема
/
o --- o --- o --- * --- o --- o --- o --- o мастер
вы можете запустить git rebase master topic, чтобы быть в курсе, прежде чем ваша тема станет
готов к отправке вверх по течению. Это приведет к возврату к трехстороннему слиянию, и это
будет конфликтовать так же, как и тестовое слияние, которое вы разрешили ранее. мерзавец повторно будет запущен
by мерзавец перебазировать чтобы помочь вам разрешить этот конфликт.
GIT
Часть мерзавец(1) люкс
Используйте git-rerere онлайн с помощью сервисов onworks.net