Имея два коммита SHA1, как я могу получить, который пошел первым без вручную анализ журнала git?Как узнать, какая фиксация была первой?
Обратите внимание, что я не пытаюсь найти, какой из них является предком другого, я хочу знать, какой из них был выдвинут первым.
Я хочу получить его в хронологическом порядке в истории git, а не по дате фиксации. Любой метод приветствуется, но предпочтительным является прямой путь (я использую его непосредственно на эмуляторе терминала, а не на скрипте).
Я попытался с помощью git merge-base
, как предложил @wRAR.
Во-первых, есть недостаток: git merge-base --is-ancestor
не дает мне выход. Он выходит с 0 или 1 без вывода чего-либо в stdout. Его хорошо при написании сценария, но когда вручную, используя его непосредственно на моем терминале, я должен проверить статус выхода на дополнительном этапе (echo $?
на bash, $LASTEXITCODE
на PowerShell). Не нарушитель сделки, но создает небольшую стычку.
Но, во всяком случае, это не сработало.
Работы по следующему сценарию:
> git log --oneline --graph
| * <SHA1 D> Fourth commit.
| * <SHA1 C> Third commit.
| * <SHA1 B> Second commit.
| * <SHA1 A> First commit.
> git merge-base --is-ancestor <SHA1 B> <SHA1 C>
> echo $?
0
> git merge-base --is-ancestor <SHA1 C> <SHA1 B>
> echo $?
1
Но не в этой (не делать то, что я намерен):
> git log --oneline --graph
* <SHA1 D> Merged work.
|\
| * <SHA1 C> Paul's first commit.
* | <SHA1 B> John's second commit.
|/
* <SHA1 A> John's first commit.
> git merge-base --is-ancestor <SHA1 B> <SHA1 C>
> echo $?
1
> git merge-base --is-ancestor <SHA1 C> <SHA1 B>
1
Он работает по назначению: ни один из коммитов не является предком другого. – wRAR
Если вы хотите использовать что-то другое, кроме естественной фиксации DAG, чтобы установить заказ фиксации, пожалуйста, проясните это. – wRAR
@wRAR Добавлена заметка, поясняющая, что я намерен. – talles