如何跟踪 GIT 强制推送?你能 lose/delete 提交吗?
How to track GIT force pushes? Can you lose/delete commits?
这是我们团队合作的一个回购协议:
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/45
https://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 也更改为 return 恢复丢失的代码,但我想弄清楚我们是如何丢失两个 PR 的
GitHub 审计追踪
GitHub 有用于解决此类问题的审核日志:
文档:https://developer.github.com/v3/activity/events/
对于您的情况,分析 https://api.github.com/users/hmcts/events 可能会揭示您正在寻找的内容。我在 refs/heads/master
和 PullRequestEvents
上浏览了一下 PushEvent
。我没有找到您的具体答案,但通过一些挖掘您可能会找到答案。
丢失提交
为了回答你问题的另一部分,强制推送是我知道丢失提交的唯一方法。
暂时解决这个问题,你仍然有分支,所以你可以将它们合并到 master 中以获得你的更改。
对于未来,我建议强制执行以下内容:
- 永远不要推送 force master 或任何其他共享分支,
- 只能强制推送属于单个开发人员的分支,前提是开发人员知道he/she做什么
此外,如果您不再有分支,您可以查看开发人员的计算机,比较日志和重新登录并从不同的地方重建您的分支(例如,dev 1 将有旧的他的 reflog 中的版本,所以你可以拉出当前的 master,并合并这个已被删除的旧版本,dev 2 将具有强制推送的版本,等等)。这是一项繁琐的任务,但这是恢复丢失数据的最佳方式。
这是我们团队合作的一个回购协议: 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/45 https://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 也更改为 return 恢复丢失的代码,但我想弄清楚我们是如何丢失两个 PR 的
GitHub 审计追踪
GitHub 有用于解决此类问题的审核日志:
文档:https://developer.github.com/v3/activity/events/
对于您的情况,分析 https://api.github.com/users/hmcts/events 可能会揭示您正在寻找的内容。我在 refs/heads/master
和 PullRequestEvents
上浏览了一下 PushEvent
。我没有找到您的具体答案,但通过一些挖掘您可能会找到答案。
丢失提交
为了回答你问题的另一部分,强制推送是我知道丢失提交的唯一方法。
暂时解决这个问题,你仍然有分支,所以你可以将它们合并到 master 中以获得你的更改。
对于未来,我建议强制执行以下内容:
- 永远不要推送 force master 或任何其他共享分支,
- 只能强制推送属于单个开发人员的分支,前提是开发人员知道he/she做什么
此外,如果您不再有分支,您可以查看开发人员的计算机,比较日志和重新登录并从不同的地方重建您的分支(例如,dev 1 将有旧的他的 reflog 中的版本,所以你可以拉出当前的 master,并合并这个已被删除的旧版本,dev 2 将具有强制推送的版本,等等)。这是一项繁琐的任务,但这是恢复丢失数据的最佳方式。