Как отслеживать принудительные толчки GIT? Можно ли потерять/удалить коммиты?

Вот репозиторий, над которым мы работаем как команда: 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.

Вы говорили со своей командой, чтобы узнать, действительно ли кто-нибудь делал git push --force?

padawin 08.04.2019 12:26

Github должен быть в состоянии показать вам, кто принудительно обновился. Сам Git не регистрирует эту информацию, насколько мне известно.

evolutionxbox 08.04.2019 12:29

все на одной странице, чтобы не нажимать -f. Итак, пытаясь отладить это

ChrisGuru 08.04.2019 12:51

как вы можете увидеть это на Github сила толкает?

ChrisGuru 08.04.2019 12:52

@ChrisGuru AFAIK, вы можете видеть принудительное нажатие, если оно находится в ветке, отличной от master, и у него есть ожидающий пул реквест. В этом запросе на вытягивание должно быть сообщение о том, что xxx принудительно перемещено с xxx на xxx, что-то в этом роде.

tjysdsg 08.04.2019 13:10

Принудительное нажатие легко обнаружить, если вы обновляете код, но не если код удаляется....

ChrisGuru 08.04.2019 13:22

Из графика журнала я обнаружил, что PR45 был объединен с feature/fz-adding-dropdown-menu, а затем PR48 был создан из feature/fz-adding-dropdown-menu. Затем PR48 был объединен с master. Так вроде PR45 не сняли. PR46 был объединен с master69f3799, но 69f3799 теперь отсутствует в master. Оно могло быть перезаписано силовым толчком 9ee9fde, совершенным ficklephil.

ElpieKay 08.04.2019 13:51

Чтобы обнаружить или предотвратить принудительное нажатие, вы можете настроить веб-перехватчик.

ElpieKay 08.04.2019 14:04

Ваш журнал событий может быть полезен: api.github.com/users/hmcts/события показывает все события, включая push-события. Это трудно анализировать, но это может помочь вам найти оскорбительный толчок. Ссылка: developer.github.com/v3/активность/события

joanis 08.04.2019 15:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
9
186
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Журнал аудита GitHub

На GitHub есть журнал аудита для устранения таких проблем:

Документация: https://developer.github.com/v3/activity/events/

В вашем случае анализ https://api.github.com/users/hmcts/события может выявить то, что вы ищете. Я немного поискал PushEvent на refs/heads/master и PullRequestEvents. Я не нашел вашего конкретного ответа, но, покопавшись, вы сможете понять это.

Потеря коммитов

Чтобы ответить на другую часть вашего вопроса, принудительное нажатие - единственный известный мне способ потерять коммиты.

Чтобы решить проблему на данный момент, у вас все еще есть ветки, поэтому вы можете объединить их в мастере, чтобы получить свои изменения.

На будущее я бы предложил применить следующее:

  • НИКОГДА не нажимайте форс-мастер или любую другую общую ветку,
  • только ветки, принадлежащие отдельным разработчикам, могут быть принудительно отправлены, только если разработчик знает, что он делает

Кроме того, если у вас больше нет веток, вы можете просматривать компьютеры разработчиков, сравнивать логи и рефлоги и реконструировать вашу ветку из разных мест (например, у разработчика 1 в рефлоге будет старая версия, так что вы можете вытащить текущий мастер и объединить эту старую версию, которая была удалена, dev 2 будет иметь принудительно отправленную версию и так далее). Это утомительная задача, но это лучший способ восстановить потерянные данные.

Другие вопросы по теме