Как получить все идентификаторы SHA для коммитов из локального и удаленного филиала? - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь получить список всех идентификаторов коммитов для конкретной ветви,

Я только знаю, что git ls-remote <git-repo-url> | awk '{print $1}' дает последний коммит sha из всех веток / голов.

Моя цель - найти, присутствует ли локальный последний коммит, полученный от git rev-parse <branch_name>, в списке всех коммитов, полученных с удаленного компьютера.если это так, мне нужно выполнить перебазирование, если последний SHA коммита на удаленном компьютере присутствует в списке локального коммита sha, но это не мой последний вариант, это означает, что моя ветвь локально продвинулась вперед, и мне не нужно делать перебазирование, а просто нажать.

1 Ответ

0 голосов
/ 13 июня 2018

Если то, что вы пытаетесь сделать, это определить, имеет ли ваша локальная ветвь отклонение от удаленной ветки, я думаю, что вы лучше обслуживаете git-log и тройной нотацией.Например:

git log <local-branch>...<remote-branch> --oneline

предоставит вам список коммитов, которые либо в local-branch, либо в remote-branch, но не оба .

Если вы также добавите--left-right, вы получите указание, на какой стороне находится коммит:

git log <local-branch>...<remote-branch> --oneline --left-right

, где < означает, что коммит находится слева, но не справа ,в то время как > означает справа, но не слева .

Редактировать: , если вы не пишете сценарий, в этом случае git-merge-base с опцией --is-ancestor, предложенной в @ axiac , comment - лучший выбор, поскольку вы можете просто проверить код выхода.

...