Подтвердить что ты не робот

Git: проверить фиксацию xyz в удаленном репо?

У меня есть фиксация xyz в моей локальной ветке, которую я хочу проверить, если она включена в репозиторий удаленной версии; могу ли я сделать это несколькими путями? Я мог бы клонировать удаленное репо, но я надеюсь на более хороший и быстрый способ. git ls-remote казался многообещающим, но не нашел для меня ничего полезного. Спасибо!

4b9b3361

Ответ 1

Предположим, что удаленный, который ссылается на удаленный репозиторий, называется origin. В этом случае сначала обновите все ветки удаленного отслеживания с помощью

git fetch origin

Теперь вы можете использовать полезную опцию --contains для git branch, чтобы узнать, какая из ветвей удаленных содержит эту фиксацию:

git branch -r --contains xyz

(-r означает показывать только ветки удаленного отслеживания.) Если commit xyz содержится в одной или нескольких ветвях удаленного отслеживания, вы увидите вывод, например:

  origin/test-suite
  origin/HEAD -> origin/master
  origin/master

Если он содержится в вашем локальном репозитории, но не является одной из ветвей удаленного отслеживания, выход будет пустым. Однако, если это коммитирование вообще неизвестно в вашем репозитории, вы получите сообщение об ошибке malformed object name и сообщение об использовании - возможно, немного запутанное, если вы этого не ожидаете...

Ответ 2

Как сказал Марк,

 git branch -a --contains commitish

Однако будьте осторожны для ветвей, которые содержат выбранную вишню/переустановленную/объединенную версию коммита.

Это может пригодиться

 git log --cherry-pick --left-right <commitish> ^remote/branchname

Он будет отображать фиксацию ТОЛЬКО, если она не существует (как cherrypick) в удаленной ветке. См. Справочную страницу журнала для объяснения того, как -cherry-pick идентифицирует эквивалентные коммиты

Конечно, слияния/пересоздания с разрешениями конфликтов или сквош не могут быть автоматически обнаружены как