Вот репозиторий, над которым мы работаем как команда: https://github.com/hmcts/prd-pui-manager/pulls?q=is%3Apr+is%3Aclosed
Мы не понимаем, почему, когда мы сбрасываем master, мы не видим PR 45, 46 в журналах фиксации. https://github.com/hmcts/prd-pui-manager/pull/45https://github.com/hmcts/prd-pui-manager/pull/46
Я пробежался: git reflog
посмотрел есть ли силовой толчок, но ничего не показывает.
Имеет PR 48: https://github.com/hmcts/prd-pui-manager/pull/48 удалил PR 45,46 , если да то как?
Есть ли способ отладить принудительное нажатие на мастер?
Я надеюсь, что смогу получить помощь в этом, так как какое-то время я пытаюсь понять, как отлаживать эти потоки. Я выполнил следующие шаги, чтобы попытаться отладить:
Когда PR 48 был объединен, в нем также были изменения PR 45, чтобы вернуть потерянный код, но я хочу выяснить, как мы потеряли два PR.
Github должен быть в состоянии показать вам, кто принудительно обновился. Сам Git не регистрирует эту информацию, насколько мне известно.
все на одной странице, чтобы не нажимать -f. Итак, пытаясь отладить это
как вы можете увидеть это на Github сила толкает?
@ChrisGuru AFAIK, вы можете видеть принудительное нажатие, если оно находится в ветке, отличной от master, и у него есть ожидающий пул реквест. В этом запросе на вытягивание должно быть сообщение о том, что xxx принудительно перемещено с xxx на xxx, что-то в этом роде.
Принудительное нажатие легко обнаружить, если вы обновляете код, но не если код удаляется....
Из графика журнала я обнаружил, что PR45 был объединен с feature/fz-adding-dropdown-menu
, а затем PR48 был создан из feature/fz-adding-dropdown-menu
. Затем PR48 был объединен с master
. Так вроде PR45 не сняли. PR46 был объединен с master
69f3799
, но 69f3799
теперь отсутствует в master
. Оно могло быть перезаписано силовым толчком 9ee9fde
, совершенным ficklephil
.
Чтобы обнаружить или предотвратить принудительное нажатие, вы можете настроить веб-перехватчик.
Ваш журнал событий может быть полезен: api.github.com/users/hmcts/события показывает все события, включая push-события. Это трудно анализировать, но это может помочь вам найти оскорбительный толчок. Ссылка: developer.github.com/v3/активность/события
Журнал аудита GitHub
На GitHub есть журнал аудита для устранения таких проблем:
Документация: https://developer.github.com/v3/activity/events/
В вашем случае анализ https://api.github.com/users/hmcts/события может выявить то, что вы ищете. Я немного поискал PushEvent
на refs/heads/master
и PullRequestEvents
. Я не нашел вашего конкретного ответа, но, покопавшись, вы сможете понять это.
Потеря коммитов
Чтобы ответить на другую часть вашего вопроса, принудительное нажатие - единственный известный мне способ потерять коммиты.
Чтобы решить проблему на данный момент, у вас все еще есть ветки, поэтому вы можете объединить их в мастере, чтобы получить свои изменения.
На будущее я бы предложил применить следующее:
Кроме того, если у вас больше нет веток, вы можете просматривать компьютеры разработчиков, сравнивать логи и рефлоги и реконструировать вашу ветку из разных мест (например, у разработчика 1 в рефлоге будет старая версия, так что вы можете вытащить текущий мастер и объединить эту старую версию, которая была удалена, dev 2 будет иметь принудительно отправленную версию и так далее). Это утомительная задача, но это лучший способ восстановить потерянные данные.
Вы говорили со своей командой, чтобы узнать, действительно ли кто-нибудь делал
git push --force
?