Я хотел бы запустить git difftool HEAD~3.. path/to/file
и git открыть diffftool для каждого из этих трех коммитов, чтобы я мог видеть бок о бок представление каждой фиксации.
Как я могу получить git-diffftool, чтобы это сделать?
Я хотел бы запустить git difftool HEAD~3.. path/to/file
и git открыть diffftool для каждого из этих трех коммитов, чтобы я мог видеть бок о бок представление каждой фиксации.
Как я могу получить git-diffftool, чтобы это сделать?
Это выполнит то, что вы описываете:
git difftool HEAD~3 HEAD~2 path/to/file
git difftool HEAD~2 HEAD~1 path/to/file
git difftool HEAD~1 HEAD path/to/file
Хотите автоматизировать этот процесс? Всегда ли это три коммиты? Вы хотите трехстороннее слияние?
Обновить:
Если ответы да-да-нет, решение будет:
for i in {3..1}; do
git difftool HEAD~$i HEAD~$((i-1)) path/to/file
done
Обновить:
Если ответы да-нет-да, это, по сути, то, что здесь спрашивает @ruffin. Смотрите мой ответ.
Или вы можете просто запустить git log -p
- это почти то же самое, что вы хотите
ОБНОВИТЬ:
Matthieu Moy предложил гораздо лучший вариант:
for rev in $(git rev-list <committish>.. ); do
git difftool ${rev} ${rev}~1;
done
OLD-версия ответа:
Я бы сказал, что вы делаете что-то вроде:
git rev-list <commitish>.. | wc -l
или
git log --oneline <commitish>.. | wc -l
Это будет подсчитывать, сколько изменений у вас есть между вашим <commitish>
и HEAD.
Затем, используя этот номер, вы можете автоматически пропустить через фиксации, чтобы увидеть различия
c='git log --online <commitish>.. | wc -l'
while ! ${c} eq 0 ; do
git difftool HEAD~${c} HEAD~${($c-1)}
c=${c}-1
done
for i in 1 2 3
do
((j=${i}-1))
git difftool HEAD~${i}..HEAD~${j} path/to/file &
done
Несколько иной подход:
1) Выполните интерактивную перезагрузку
git rebase -i <commitish>
2) Отметьте все свои фиксации для редактирования
3) Для каждого запуска фиксации
git difftool HEAD~1
4) Перейдите к следующему фиксации и повторите шаг 3
git rebase --continue
Дополнительным преимуществом является то, что если вы видите проблему в обзоре, вы уже проверили фиксацию, которую хотите исправить.