2015-01-13 2 views
0

Моя цель - написать скрипт для переадресации непосредственно перед предоставленной фиксацией, чтобы было легко зафиксировать фиксацию, предоставив SHA (долгосрочное мышление, позволяющее пользователю предоставлять регулярное выражение, но вы получаете точку).Git: Если задано SHA фиксации, могу ли я получить предыдущий?

Любые творческие решения? Здесь используется bash.

+0

При использовании sha1 'abcdef' вы можете получить доступ к предыдущему, используя просто' abcdef^'(например,' git show abcdef^') – njzk2

+3

Помните, что они могут быть несколько * предыдущих *; commit может иметь более одного родителя. – Jubobs

ответ

2

На странице gitrevisions человек:

^, например, HEAD ^, v1.5.1^0

Суффикс^к параметру ревизии означает первый родитель этого объекта фиксации.^означает, что th родитель (т. е. эквивалентен^1). В качестве специального правила^0 означает сам фиксат и используется, когда это имя объекта тега, относящегося к объекту фиксации.

~, например. master ~ 3

Суффикс ~ к параметру ревизии означает объект фиксации, который является предком первого поколения именованного объекта commit, следуя только первым родителям. То есть ~ 3 эквивалентно ^^^, что эквивалентно^1^1^1. Ниже приведена иллюстрация использования этой формы.

Таким образом, как rev^, так и rev~ являются (первой) версией родительской ревизии фиксации. Как отмечает @Jubobs в своем комментарии, любая версия может иметь более одного родителя.