У меня есть быстрый вопрос относительно git коммитов и веток.

Скажи, что я хочу получить два идентификатора коммита на основе двух дат.

Я делаю рев на "Мастер ветке".

git rev-list --since='2015-01-01' --reverse origin/master | head -1
git rev-list --until='2015-06-30' origin/master | head -1

Теперь, если я переключаю ветку, IE я делаю:

git checkout testing

я получу только идентификатор коммита из ветки тестирования, или я также получу идентификатор коммита из всех других веток, включая ветку master?

Простое да нет, я хочу быть уверенным, что я не получаю никаких коммитов из ветки master, так что я получаю код только из коммитов в тестовой ветке, а не код из любой другой ветки.

Заранее спасибо.

1 ответ1

1

Из документации для git rev-list:

Перечислите коммиты, которые достижимы, следуя родительским ссылкам из данного коммита (ов), но исключая коммиты, которые достижимы из тех, которые даны с ^ перед ними. Выходные данные приведены в обратном хронологическом порядке по умолчанию.

Не имеет значения, какую ветку вы проверили. Вы должны указать ответвление (или целевой коммит в целом) в качестве параметра команды rev-list .

Ответ на ваш вопрос заключается в том, что вы получите тот же результат, даже если вы находитесь в другой ветке. Чтобы получить эти коммиты для ветки testing вам нужно использовать:

git rev-list --since='2015-01-01' --reverse testing | head -1
git rev-list --until='2015-06-30' testing | head -1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .