Git автоматизирует часть возврата с помощью git log -L
, скажем, вы хотите отследить строку 6 назад во времени в файле 1. c git log -L 6,6:file1.c
, и она покажет вам.
Но я думаю никто не учил этому делать наоборот, чтобы проследить эволюцию вперед . Чтобы использовать существующий механизм, вам нужно будет сделать историю и развернуть эволюцию кузена. Это не было бы таким сложным, а одноразовый фиксированный структурный коммит всего лишь на сто байт ... конечно, почему бы и нет. Это проходит самый смелый тест в истории среднего размера,
редактирование: исправлена ошибка с головой, оригинальная публикация почему-то имела версию _before_ Я получил ее на работу
branch2=your/other/branch
base=`git merge-base @ $branch2`
declare -A mymap
while read original children; do
newparents=""
for child in $children; do newparents+=" -p ${mymap[$child]}"; done
mymap[$original]=`git commit-tree $newparents -m $original $original:`
[[ $original = $base ]] && break;
done <<EOD
$(git rev-list --ancestry-path --children $base^! $branch2)
EOD
Затем вставьте номера начальной и конечной строк, к которым вы отследили текущий совет, обратно в
git log -L $start,$end:file1.c ${mymap[$base]}