2016-01-10 2 views
1

У меня есть очень глубокая история GITНайти совершает после фиксации

0000001 
0000002 
0000003 
0000004 
... 

я использовал git-bisect найти хэш старого вопроса, который вернулся 0000003. Оказывается, решение может лежать в одном из фиксаций после этого хэша 0000002 или даже более поздние

я могу использовать

git log 0000003 

который будет показывать историю проекта до этой фиксации, но ничего после

0000003 
0000004 
... 

Я хочу найти коммиты вокруг/после 0000003 с использованием только хэш - то есть, я хочу найти 0000002 без ручного прокручивания всей истории.

Как это делается?

+0

Вы читали https://git-scm.com/docs/gitrevisions? –

ответ

1

Вы можете попробовать и посмотреть в течение следующих нескольких фиксаций (те, которые созданы после 00003)

git log --reverse --pretty=format:%H --ancestry-path 3...master | head -3 

С 3 является SHA1 коммита 00003.

У вас есть другие методы, описанные в «How do I find the next commit in git?».
Например:

git rev-list HEAD..3 | tail -3 

Это предположить те последующие коммиты доступны из главного или HEAD.

В том случае, если у вас нет конкретного «адресата» фиксации в памяти, но вместо этого хотят видеть ребенок совершает это может быть на любом филиале, вы можете использовать эту команду:

git rev-list --children --all | grep ^${COMMIT} 
+0

Прохладный :-) Я узнал что-то новое '-ancestry-path' не знал об этом, – CodeWizard

0

git bisect - хороший вариант, как вы уже использовали его.

Вы можете использовать ГОЛОВЫ ~ X

# set X to be the number of commits you want to start with 
git log HEAD~X 

# Range: between HEAD to the previous X commits 
git log HEAD...HEAD~X 

Read here о фиксации диапазона.

Смежные вопросы