Я пытаюсь понять проект, он помогает посмотреть на свою эволюцию при помощи gitk. То, что я делаю, является контролем первая фиксация, поймите код, запустите тесты, перейдите к следующей фиксации и повторению. Мой текущий рабочий процесс является к контролю фиксацией через свой хеш
git checkout 79cd6
Но то, что я хотел бы, является другим ответвлением, где я могу выполнить свои собственные изменения и позволяю мне объединять фиксации от основного ответвления, но без потребности найти хеш фиксации. Идеализированный рабочий процесс:
git checkout -b <newbranch> <first commit id of master>
git <command to move head of current branch to next commit of master>
Вы можете написать небольшой сценарий оболочки. Один сценарий будет запускать журнал git --pretty=oneline | awk '{печать $1;}'
. Второй скрипт (назовем его step
или что-то в этом роде) будет использовать head
, tail
, wc -l
. Затем прочитайте последнюю строку файла с помощью tail
, узнайте, сколько строк в файле, и удалите последнюю строку из файла. Уродливо, конечно, но это сделает свою работу. :) (Если вы хотите быть немного менее уродливым, он может использовать truncate(1)
, чтобы просто отрезать последнюю строку файла, а не всегда создавать новые временные файлы.)
Сохраните это как ~ / bin / git-next
или где-нибудь еще на вашем пути:
#!/bin/bash
git co $(git rev-list --children --all | awk "/^$(git rev-parse @\{0})/ { print \$2; }")
Это будет проверять первый дочерний элемент текущей ревизии.
Это будет очень медленным на большом репо, но он выполнит свою работу.
Вы можете изменить это, чтобы обрабатывать ветвление по мере необходимости.