Как получить определенный SHA из вывода журнала git - PullRequest
3 голосов
/ 22 сентября 2011

Выполнение следующей команды git log --before "Feb 01 2011" возвращает все коммиты до указанной даты, включая их SHA Я пытаюсь написать сценарий cygwin, который синхронизирует мою голову с последним коммитом определенного месяца, без необходимости искать и вводить SHA самостоятельно. Есть идеи? Спасибо!

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Просто используйте rev-list с теми же параметрами, которые вы передаете в журнал, плюс -n 1 для возврата только первого.

sha1=$(git rev-list --before "Feb 01 2011" -n 1 HEAD)
0 голосов
/ 22 сентября 2011

В bash на linux работают следующие, я думаю, что это также должно работать на cygwin:

git checkout $(git log --before='Feb 01 2011' -n1 | head -n 1 |sed s/commit\ //)

Может быть хорошей идеей будет немедленно создать ветку, когда вы сделаете это

git checkout $(git log --before='Feb 01 2011' -n1 | head -n 1 |sed s/commit\ //) -b 2011-02

Или, в качестве альтернативы, если вы намереваетесь создать тег для сценария, возможно, это лучший вариант.Например:

git checkout $(git log --before='Feb 01 2011' -n1 | head -n 1 |sed s/commit\ //)
git tag 2011-01
...