RSS Джулия Эванс

Как git cherry-pick и revert используют 3-стороннее слияние

Follow
Автор, изначально неправильно понимая git cherry-pick как просто применение патча, углубляется в его реальное функционирование, открывая более тонкий процесс, связанный с "трехсторонним слиянием". Ошибочное понимание возникло, когда автор пытался разрешать конфликты слияния с помощью метода патча, что не удалось, в отличие от ожидаемого поведения git cherry-pick. Более глубокое исследование исходного кода git показало, что cherry-pick использует трехстороннее слияние, понятие, незнакомое автору на тот момент. Это побудило исследовать трехсторонние слияния, которые, по сути, включают слияние двух файлов путем сравнения их с оригинальной версией (базовой). Это понятие распространяется на применение патчей в git, где версии файла до и после коммита, а также текущий файл, составляют три версии, используемые в слиянии. Cherry-pick, rebase и revert все используют эту стратегию трехстороннего слияния, отличаясь в основном порядком и интерпретацией базовой и целевой версий. Автор вводит термин "трехсторонний патч", чтобы описать эту технику, подчеркивая ее преимущество в предоставлении большего контекста для слияния по сравнению с традиционными патчами. Хотя git apply обычно обрабатывает традиционные патчи, она также предлагает флаг --3way для проведения трехсторонних слияний. Это исследование подчеркивает изумительную работу по использованию трехсторонних слияний для применения патчей в git, предлагая единый подход для различных операций, оставаясь прозрачным для пользователей, которые могут придерживаться знакомого понятия "применения патча". Автор признает сложность слияния в git, намекая на понятия, такие как рекурсивные слияния и множественные алгоритмы слияния, с рекомендацией книги "Building Git" для более глубокого изучения. Наконец, автор выражает восхищение изумительным дизайном механизма патчирования git, хваля его интуитивность и эффективность.
favicon
jvns.ca
How git cherry-pick and revert use 3-way merge
Create attached notes ...