{"id":467605,"date":"2025-07-18T23:18:08","date_gmt":"2025-07-18T23:18:08","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=467605"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=467605","title":{"rendered":"<span>\u041f\u0440\u0438\u0437\u0440\u0430\u043a\u0438 \u0432 \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u0445: \u043f\u044b\u043b\u0435\u0441\u043e\u0441\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u044e Git \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u0443\u0442\u0435\u043a\u0448\u0438\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8e1\/05d\/a89\/8e105da8940577a3b242ee634945b577.png\" width=\"1536\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8e1\/05d\/a89\/8e105da8940577a3b242ee634945b577.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8e1\/05d\/a89\/8e105da8940577a3b242ee634945b577.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0448\u0438 (<code>git push --force<\/code>), \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b\u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0438 \u0445\u043e\u0442\u044f\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0445 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.\u00a0<\/p>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442 \u0438\u0441\u0447\u0435\u0437. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 GitHub \u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u0438\u0440\u0430\u0435\u0442: \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439\u00bb \u043a\u043e\u043c\u043c\u0438\u0442 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e \u0445\u044d\u0448\u0443 \u2014 \u043f\u0443\u0441\u0442\u044c \u0438 \u0431\u0435\u0437 \u043f\u0440\u044f\u043c\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a. GitHub \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 <abbr class=\"habraabbr\" title=\"\u041a\u043e\u043c\u043c\u0438\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u043d\u0430 \u0432\u0435\u0442\u043a\u0430, \u0442\u0435\u0433 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Git.\" data-title=\"&lt;p&gt;\u041a\u043e\u043c\u043c\u0438\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u043d\u0430 \u0432\u0435\u0442\u043a\u0430, \u0442\u0435\u0433 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Git.  &lt;\/p&gt;\" data-abbr=\"\u00ab\u0412\u0438\u0441\u044f\u0447\u0438\u0439\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\">\u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u044b<\/abbr> (dangling commit) \u0432\u0435\u0447\u043d\u043e, \u0430 \u0432 GH Archive \u0442\u0430\u043a\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442\u044b \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 (zero-commit PushEvents).\u00a0<\/p>\n<p>\u042f \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0441\u0435 \u0442\u0430\u043a\u0438\u0435 \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442\u044b \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u044f\u0442\u044c \u043b\u0435\u0442 \u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u043b \u0438\u0437 \u043d\u0438\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u044b, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0440\u0443\u0447\u0438\u043b \u043f\u043e\u0440\u044f\u0434\u043a\u0430 $25 000 \u043f\u043e \u0431\u0430\u0433-\u0431\u0430\u0443\u043d\u0442\u0438. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 Truffle Security \u043c\u044b \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f <a href=\"https:\/\/github.com\/trufflesecurity\/force-push-scanner\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043e\u0442\u044b\u0441\u043a\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u0441 \u0437\u0430\u0431\u044b\u0442\u044b\u043c\u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u043c\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0434\u043e \u043d\u0438\u0445 \u0434\u043e\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043a\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/02f\/645\/690\/02f64569070f154410a1b1c1518605e8.gif\" alt=\"Open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 Force Push Secret Scanner, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432 \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0445\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u0445 \" title=\"Open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 Force Push Secret Scanner, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432 \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0445\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u0445 \" width=\"2040\" height=\"772\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/02f\/645\/690\/02f64569070f154410a1b1c1518605e8.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/02f\/645\/690\/02f64569070f154410a1b1c1518605e8.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>Open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <\/em><a href=\"https:\/\/github.com\/trufflesecurity\/force-push-scanner\" rel=\"noopener noreferrer nofollow\"><em>Force Push Secret Scanner<\/em><\/a><em>, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432 \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0445\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u0445 <\/em><\/figcaption><\/div>\n<\/figure>\n<hr\/>\n<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 <a href=\"https:\/\/www.linkedin.com\/in\/sharonbrizinov\/\" rel=\"noopener noreferrer nofollow\">\u0428\u0430\u0440\u043e\u043d \u0411\u0440\u0438\u0437\u0438\u043d\u043e\u0432<\/a>. \u042f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u043e\u0432 \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 OT\/IoT, \u043d\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0431\u0435\u0440\u0443\u0441\u044c \u0438 \u0437\u0430 \u0431\u0430\u0433-\u0431\u0430\u0443\u043d\u0442\u0438.<\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b <a href=\"https:\/\/medium.com\/@sharon.brizinov\/how-i-made-64k-from-deleted-files-a-bug-bounty-story-c5bd3a6f5f9b\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0441\u0442<\/a> \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b $64 000, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044f \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c\u0438 <em>[<\/em><a href=\"https:\/\/habr.com\/ru\/companies\/bastion\/articles\/916752\/\" rel=\"noopener noreferrer nofollow\"><em>\u043f\u0435\u0440\u0435\u0432\u043e\u0434<\/em><\/a><em> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435]<\/em>. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0436\u0438\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438.\u00a0<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0430\u043b\u0441\u044f \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441 CEO Truffle Security \u0414\u0438\u043b\u0430\u043d\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0438\u0434\u0435\u0439 \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043a\u0440\u0443\u043f\u043d\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u043e\u0439 \u043e\u0445\u043e\u0442\u044b \u0437\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u043c\u0438.\u00a0<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0434\u0435\u0435 \u2014 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/docs.github.com\/en\/rest\/using-the-rest-api\/github-event-types?apiVersion=2022-11-28\" rel=\"noopener noreferrer nofollow\">GitHub Event API<\/a> \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c <a href=\"https:\/\/www.gharchive.org\/\" rel=\"noopener noreferrer nofollow\">GH Archive<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442\u044b \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432.\u00a0<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0435\u043a\u0442\u044b, \u0431\u043b\u043e\u0433\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u043c\u043d\u0435 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p><a href=\"https:\/\/docs.github.com\/en\/rest\/using-the-rest-api\/github-event-types?apiVersion=2022-11-28\" rel=\"noopener noreferrer nofollow\">GitHub Event API<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/neodyme.io\/en\/blog\/github_secrets\/\" rel=\"noopener noreferrer nofollow\">Hidden GitHub Commits and How to Reveal Them by <\/a><a href=\"http:\/\/Neodyme.io\" rel=\"noopener noreferrer nofollow\">Neodyme.io<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/trufflesecurity.com\/blog\/anyone-can-access-deleted-and-private-repo-data-github\" rel=\"noopener noreferrer nofollow\">Anyone can Access Deleted and Private Repository Data on GitHub by TruffleHog<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/trufflesecurity.com\/blog\/trufflehog-now-finds-all-deleted-and-private-commits-on-github\" rel=\"noopener noreferrer nofollow\">TruffleHog now finds all Deleted &amp; Private Commits on GitHub by TruffleHog<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/trufflesecurity.com\/blog\/trufflehog-scans-deleted-git-branches\" rel=\"noopener noreferrer nofollow\">TruffleHog Scans Deleted Git Branches by TruffleHog<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.aquasec.com\/blog\/undetected-hard-code-secrets-expose-corporations\/\" rel=\"noopener noreferrer nofollow\">Phantom Secrets: Undetected Secrets Expose Major Corporations by Aqua Security<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.gharchive.org\/\" rel=\"noopener noreferrer nofollow\">gharchive<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043b \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0445\u043e\u0442\u0443 \u043d\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u044b. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u043d\u0430 GitHub \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442 \u2014 \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044e, \u043a\u0430\u043a \u043d\u0430\u0439\u0442\u0438 <strong>\u0432\u0441\u0435 \u00ab<\/strong>\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u044b.<\/p>\n<h2>\u0427\u0442\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0430?<\/h2>\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/companies\/bastion\/articles\/916752\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u043e\u0441\u0442\u0435<\/a> \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 GitHub \u0444\u0430\u0439\u043b\u044b, \u0441\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0435\u00bb \u0431\u043b\u043e\u0431\u044b (dangling blobs) \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0438 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043c\u0438\u0442 \u0438\u043b\u0438 \u0434\u0435\u0440\u0435\u0432\u043e\u2026 \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u044f \u0442\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u043b. \u041f\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u0432 \u0441 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 Truffle, \u044f \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u043c\u0443 \u0431\u043b\u043e\u0431\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0432\u043e\u0439 \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0439\u00bb \u043a\u043e\u043c\u043c\u0438\u0442. \u0422\u043e\u0433\u0434\u0430 \u044f \u043f\u0440\u043e\u0432\u0435\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438<strong> <\/strong>\u043d\u0430\u0448\u0435\u043b \u0441\u043f\u043e\u0441\u043e\u0431,<strong> <\/strong>\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c 100% \u0442\u0430\u043a\u0438\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 GitHub.\u00a0<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b\u0438 \u0438 \u0437\u0430\u043f\u0443\u0448\u0438\u043b\u0438 \u0441\u0435\u043a\u0440\u0435\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u041a\u0430\u043a \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c? \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 <code>HEAD<\/code> \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043a\u043e\u043c\u043c\u0438\u0442\u0443 \u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0443\u0448\u0430\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c9c\/09f\/a17\/c9c09fa170655374f6e63c77739c40b2.png\" width=\"1250\" height=\"104\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c9c\/09f\/a17\/c9c09fa170655374f6e63c77739c40b2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c9c\/09f\/a17\/c9c09fa170655374f6e63c77739c40b2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043e\u043c\u043c\u0438\u0442, \u0434\u0435\u043b\u0430\u044f \u0435\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c. \u041d\u043e, \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438 <a href=\"https:\/\/neodyme.io\/en\/blog\/github_secrets\/\" rel=\"noopener noreferrer nofollow\">neodyme<\/a> \u0438 <a href=\"https:\/\/trufflesecurity.com\/blog\/anyone-can-access-deleted-and-private-repo-data-github\" rel=\"noopener noreferrer nofollow\">TruffleHog<\/a>, \u0434\u0430\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f GitHub \u043f\u043e\u043c\u043d\u0438\u0442 \u0435\u0433\u043e \u0432\u0435\u0447\u043d\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0445\u044d\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u0442\u043e \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0441\u0442\u0435\u0440\u0442\u044b\u043c. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a <a href=\"https:\/\/trufflesecurity.com\/blog\/trufflehog-now-finds-all-deleted-and-private-commits-on-github\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438<\/a> TruffleHog, \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0434\u0430\u0436\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0445\u044d\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u0430.<\/p>\n<h3>\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448\u0438\u043d\u0433: \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/h3>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u043e\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/SharonBrizinov\/test-oops-commit\" rel=\"noopener noreferrer nofollow\">test-oops-commit<\/a>. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 <a href=\"https:\/\/github.com\/SharonBrizinov\/test-oops-commit\/commit\/9eedfa00983b7269a75d76ec5e008565c2eff2ef\" rel=\"noopener noreferrer nofollow\">9eedfa00983b7269a75d76ec5e008565c2eff2ef<\/a>.\u00a0<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u043f\u0440\u043e\u0441\u0442\u043e\u0439 bash-\u0441\u043a\u0440\u0438\u043f\u0442 <code>get_commits.sh<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u0438\u043f\u0430 <a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Git-Internals-Git-Objects\" rel=\"noopener noreferrer nofollow\">commit, tree \u0438 blob<\/a>:<\/p>\n<pre><code class=\"bash\">git rev-list --all | while read commit; do    echo \"Commit: $commit\"    git cat-file -p \"$commit\" | grep '^tree\\|^parent'    git ls-tree -r \"$commit\"    echo  done<\/code><\/pre>\n<p>\u041c\u044b \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0441 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c (\u0432 \u043d\u0435\u043c \u2014 \u0444\u0430\u0439\u043b <strong>README.md<\/strong>):<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/aa8\/385\/38a\/aa838538a0c8343fbe54f12f1a0a6002.png\" width=\"1251\" height=\"349\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/aa8\/385\/38a\/aa838538a0c8343fbe54f12f1a0a6002.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/aa8\/385\/38a\/aa838538a0c8343fbe54f12f1a0a6002.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b <strong>secret.txt<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0435\u0436\u0438\u0442 \u043d\u0430\u0448 \u0441\u0435\u043a\u0440\u0435\u0442 <strong>my-password-is-iloveu<\/strong>. \u041c\u044b \u00ab\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043c \u0438 \u043f\u0443\u0448\u0438\u043c \u0441\u0435\u043a\u0440\u0435\u0442 \u043d\u0430 GitHub.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f82\/5cd\/75f\/f825cd75f9929e4f48b6e4d881461e21.png\" width=\"1237\" height=\"646\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f82\/5cd\/75f\/f825cd75f9929e4f48b6e4d881461e21.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f82\/5cd\/75f\/f825cd75f9929e4f48b6e4d881461e21.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 \u0434\u0435\u0440\u0435\u0432\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442<strong> 9eedfa<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043d\u043e\u0432\u044b\u043c \u0434\u0435\u0440\u0435\u0432\u043e\u043c \u0438 \u043d\u043e\u0432\u044b\u043c \u0431\u043b\u043e\u0431\u043e\u043c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430<strong> secret.txt<\/strong>. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u0438\u0434\u043d\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 <code>git rev-list --all<\/code>, <code>git log<\/code> \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 GitHub.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f34\/3f9\/492\/f343f94929d28d000c5040d38e88bb0e.png\" width=\"1556\" height=\"537\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f34\/3f9\/492\/f343f94929d28d000c5040d38e88bb0e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f34\/3f9\/492\/f343f94929d28d000c5040d38e88bb0e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0423\u043f\u0441! \u041c\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443, \u0438 \u0440\u0435\u0448\u0430\u0435\u043c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6bf\/a2e\/236\/6bfa2e2369c66a77a52f931bbbc7b08a.png\" width=\"1369\" height=\"911\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6bf\/a2e\/236\/6bfa2e2369c66a77a52f931bbbc7b08a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6bf\/a2e\/236\/6bfa2e2369c66a77a52f931bbbc7b08a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c <code>HEAD<\/code> \u0432\u0435\u0442\u043a\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 \u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7cb\/7d7\/a48\/7cb7d7a48e3352d35dc9308f3d72b490.png\" width=\"1600\" height=\"136\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/7cb\/7d7\/a48\/7cb7d7a48e3352d35dc9308f3d72b490.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7cb\/7d7\/a48\/7cb7d7a48e3352d35dc9308f3d72b490.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0441\u043d\u043e\u0432\u0430 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0434\u0435\u0440\u0435\u0432\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432. \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043a\u043e\u043c\u043c\u0438\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u0447\u0435\u0437!<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/525\/bbc\/744\/525bbc744e207318142957ab5806dcdd.png\" width=\"1600\" height=\"567\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/525\/bbc\/744\/525bbc744e207318142957ab5806dcdd.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/525\/bbc\/744\/525bbc744e207318142957ab5806dcdd.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u043e&#8230; \u043c\u044b-\u0442\u043e \u043f\u043e\u043c\u043d\u0438\u043c \u0445\u044d\u0448 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430. \u041f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 URL \u0438 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f: <a href=\"https:\/\/github.com\/SharonBrizinov\/test-oops-commit\/commit\/9eedfa00983b7269a75d76ec5e008565c2eff2ef\" rel=\"noopener noreferrer nofollow\">9eedfa00983b7269a75d76ec5e008565c2eff<\/a>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0434\u0430\u0436\u0435 \u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u2014 9eed \u2014 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043c\u043c\u0438\u0442\u0443.\u00a0<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442 \u043d\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0432\u0435\u0442\u043a\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/55c\/e59\/301\/55ce5930186db03ea1d75ddd26b94d0d.png\" width=\"1250\" height=\"950\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/55c\/e59\/301\/55ce5930186db03ea1d75ddd26b94d0d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/55c\/e59\/301\/55ce5930186db03ea1d75ddd26b94d0d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442?<\/h3>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0430\u0442\u0430 (<code>git reset --hard HEAD~1<\/code> \u0438 <code>git push --force<\/code>), \u0432\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0435 \u0438\u0437 \u0432\u0435\u0442\u043a\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u043e\u043c\u043c\u0438\u0442, \u0434\u0435\u043b\u0430\u044f \u0435\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u043c \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 Git (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>git log<\/code> \u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u043a\u0430\u0436\u0435\u0442). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u043c\u043c\u0438\u0442 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 GitHub, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e GitHub \u0445\u0440\u0430\u043d\u0438\u0442 reflog.\u00a0<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443? \u0422\u043e\u0447\u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u044e, \u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e GitHub <a href=\"https:\/\/docs.github.com\/en\/pull-requests\/collaborating-with-pull-requests\/working-with-forks\/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility\" rel=\"noopener noreferrer nofollow\">\u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c\u0435\u043a\u0438<\/a>. GitHub \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e git-\u0441\u0435\u0440\u0432\u0435\u0440. \u042d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u0439: \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u044b, \u0444\u043e\u0440\u043a\u0438, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.\u00a0<\/p>\n<p>\u041c\u043e\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435: \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0444\u0438\u0447 GitHub \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u2014 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0438\u0445. \u0412\u043e\u0442 \u043f\u0430\u0440\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u044b? \u041a\u0430\u043a \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 <a href=\"https:\/\/www.aquasec.com\/blog\/undetected-hard-code-secrets-expose-corporations\/\" rel=\"noopener noreferrer nofollow\">Aqua Security<\/a>, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0432 \u0432\u0441\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<\/li>\n<\/ul>\n<pre><code>git -c \"remote.origin.fetch=+refs\/*:refs\/remotes\/origin\/*\" fetch origin<\/code><\/pre>\n<ul>\n<li>\n<p>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0435\u0442\u044c \u0444\u043e\u0440\u043a\u043e\u0432 GitHub? \u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u00ab\u0444\u043e\u0440\u043a\u0430\u0435\u043c\u00bb \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439? \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u044d\u0442\u0438\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 (\u0430\u0443\u0434\u0438\u0442? \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433?) GitHub \u0445\u0440\u0430\u043d\u0438\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0438\u0445, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 <code>HEAD<\/code> \u0438 \u00ab\u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442.<\/p>\n<h2>GitHub Event API<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c. \u041d\u043e \u043d\u0430\u043c \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0445\u044d\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439:<img decoding=\"async\" class=\"formula inline\" source=\"16^4=65536\" alt=\"16^4=65536\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b18\/aeb\/f74\/b18aebf749c5665cce1d57662fdfe7d0.svg\" width=\"102\" height=\"21\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b18\/aeb\/f74\/b18aebf749c5665cce1d57662fdfe7d0.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b18\/aeb\/f74\/b18aebf749c5665cce1d57662fdfe7d0.svg 781w\" loading=\"lazy\" decode=\"async\"\/>).\u00a0<\/p>\n<p>\u041a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0443 TruffleHog \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 <a href=\"https:\/\/trufflesecurity.com\/blog\/trufflehog-now-finds-all-deleted-and-private-commits-on-github\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/a>. \u041d\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u2014 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043b\u043e\u0445\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0434\u0435\u043d\u044c-\u0434\u0432\u0430 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.<\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0420\u0435\u0447\u044c \u043e GitHub Event API \u2014 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c REST API GitHub, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435. \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\n<p>\u043f\u0443\u0448\u0438\u043d\u0433 \u043a\u043e\u0434\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0438\u043b\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 issue \u0438\u043b\u0438 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043a\u043e\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0432\u0435\u0437\u0434\u044b \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u0430\u043c\u0438:\u00a0<\/p>\n<pre><code>curl http:\/\/api.github.com\/events<\/code><\/pre>\n<p>\u041f\u0430\u0440\u0430 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0439:<\/p>\n<ul>\n<li>\n<p>\u041d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 API-\u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438!<\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 GitHub, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/docs.github.com\/en\/rest\/using-the-rest-api\/github-event-types?apiVersion=2022-11-28\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u0445 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 GitHub \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0445\u044d\u0448\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432. \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c! \u041d\u043e \u044d\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u2014 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u0447\u0430\u0441. \u0410 \u043a\u0430\u043a \u0436\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f? \u041e\u043d\u0438 \u0434\u043b\u044f \u043d\u0430\u0441 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b?<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u043d\u0430\u0441, \u0435\u0449\u0451 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a <a href=\"https:\/\/github.com\/igrigorik\" rel=\"noopener noreferrer nofollow\">\u0418\u043b\u044c\u044f \u0413\u0440\u0438\u0433\u043e\u0440\u0438\u043a<\/a> \u0441\u043e\u0437\u0434\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439 GitHub \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/igrigorik\/gharchive.org\" rel=\"noopener noreferrer nofollow\">GH Archive<\/a>, \u0435\u0433\u043e \u0441\u0430\u0439\u0442 \u2014 <a href=\"http:\/\/gharchive.org\" rel=\"noopener noreferrer nofollow\">gharchive.org<\/a>.\u00a0<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 \u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 GitHub \u0437\u0430 1 \u044f\u043d\u0432\u0430\u0440\u044f 2015 \u0433\u043e\u0434\u0430 \u0432 15:00 \u043f\u043e UTC, \u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"https:\/\/data.gharchive.org\/2015-01-01-15.json.gz\" rel=\"noopener noreferrer nofollow\">\u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<p>\u0412\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 PushEvent \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430 <strong>2015-01-01-15<\/strong>:\u00a0<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/138\/6c6\/e60\/1386c6e60a069b84fcad22e7d5d5ecab.png\" width=\"1559\" height=\"677\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/138\/6c6\/e60\/1386c6e60a069b84fcad22e7d5d5ecab.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/138\/6c6\/e60\/1386c6e60a069b84fcad22e7d5d5ecab.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 force push<\/h3>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0448\u0435\u043c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u043e\u043b\u044c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432.\u00a0<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442 Git \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432? \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u043b \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448 \u0441 \u043e\u0442\u043a\u0430\u0442\u043e\u043c \u0432\u0435\u0442\u043a\u0438 \u2014 \u043f\u043e \u0441\u0443\u0442\u0438, <code>HEAD<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0432\u0438\u043d\u0443\u043b\u0438 \u043d\u0430\u0437\u0430\u0434, \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u043d\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432! \u041a\u0430\u043a \u0443\u0436\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0442\u0435\u0440\u043c\u0438\u043d zero-commit PushEvents.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u0421\u043a\u0430\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 \u0441 GH Archive \u0438 \u043f\u043e\u0438\u0449\u0435\u043c \u0442\u0430\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435:\u00a0<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b2\/7da\/ccb\/4b27daccb92a9c44efc76f4cfe6ce39c.png\" width=\"1557\" height=\"133\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/4b2\/7da\/ccb\/4b27daccb92a9c44efc76f4cfe6ce39c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b2\/7da\/ccb\/4b27daccb92a9c44efc76f4cfe6ce39c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u043e\u0434\u043d\u043e \u0438\u0437 \u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 <code>commits<\/code> \u2014 \u043f\u0443\u0441\u0442\u043e\u0439. \u0410 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u043c\u043c\u0438\u0442 \u0434\u043e \u043d\u0435\u0433\u043e (<code>before<\/code>) \u2014 \u043d\u0430 \u0442\u043e\u0442, \u0447\u0442\u043e \u0431\u044b\u043b \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u00bb, \u2014 \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e GitHub \u0432\u0441\u0451 \u0435\u0449\u0451 \u0445\u0440\u0430\u043d\u0438\u0442 \u044d\u0442\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u043f\u0443\u0441\u0442\u044f \u0434\u0435\u0441\u044f\u0442\u044c \u043b\u0435\u0442!<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/84e\/1a7\/bcf\/84e1a7bcf86453314198e0db4fe5c1fd.png\" width=\"1170\" height=\"1021\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/84e\/1a7\/bcf\/84e1a7bcf86453314198e0db4fe5c1fd.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/84e\/1a7\/bcf\/84e1a7bcf86453314198e0db4fe5c1fd.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u043e\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0438\u0442:\u00a0<\/p>\n<blockquote>\n<p><a href=\"https:\/\/github.com\/grapefruit623\/gcloud-python\/commit\/e9c3d31212847723aec86ef96aba0a77f9387493\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/grapefruit623\/gcloud-python\/commit\/e9c3d31212847723aec86ef96aba0a77f9387493<\/a><\/p>\n<\/blockquote>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2fb\/5ae\/3fd\/2fb5ae3fde69ded6bc03e99978dc13e1.png\" width=\"1170\" height=\"610\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2fb\/5ae\/3fd\/2fb5ae3fde69ded6bc03e99978dc13e1.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2fb\/5ae\/3fd\/2fb5ae3fde69ded6bc03e99978dc13e1.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0417\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442 <code>before<\/code> \u043c\u043e\u0433 \u0431\u044b\u0442\u044c \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0437\u0430 \u0440\u0430\u0437.\u00a0<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u043d\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e (\u0438\u043b\u0438 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f), \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0445\u044d\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u043c\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0430 (\u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432) \u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0447\u0443\u0436\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0435 Git-\u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3e0\/789\/8c5\/3e07898c5c26bd100e9fd4abd08270eb.png\" width=\"1169\" height=\"209\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/3e0\/789\/8c5\/3e07898c5c26bd100e9fd4abd08270eb.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3e0\/789\/8c5\/3e07898c5c26bd100e9fd4abd08270eb.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<ul>\n<li>\n<p>\u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <strong>\u0432 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/strong>. <code>--filter=blob:none<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0431\u0435\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432; <code>blobs; --no-checkout<\/code> \u2014 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c checkout \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 (<code>before<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TruffleHog. TruffleHog \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 (\u0431\u043b\u043e\u0431\u043e\u0432), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u043c, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 <code>before<\/code> \u0438 \u0434\u0432\u0438\u0433\u0430\u044f\u0441\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a \u043d\u0430\u0447\u0430\u043b\u0443 \u0432\u0435\u0442\u043a\u0438. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u043e\u0445\u0432\u0430\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432. \u041d\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441: \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0435, \u043d\u0435 \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u044b. \u0412\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u043c\u0438 <a href=\"https:\/\/github.com\/trufflesecurity\/force-push-scanner\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/a> \u0447\u0443\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435: \u043e\u043d \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>GitHub \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u0447\u043d\u044b\u0445 \u043b\u0438\u043c\u0438\u0442\u043e\u0432 \u043d\u0430 Git-\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043d\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0447\u0430\u0441\u0442\u044b\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0435 <code>clone<\/code> \u0438\u043b\u0438 <code>fetch<\/code> \u2014 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044e \u043e\u0442\u0432\u0435\u0442\u0430 \u0438\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u044b Git-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/orgs\/community\/discussions\/44515\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 GitHub API \u0438\u043b\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 GitHub.<\/p>\n<h4>GitHub API<\/h4>\n<p>\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0442\u0447 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 c \u043f\u043e\u043c\u043e\u0449\u044c\u044e GitHub REST API:\u00a0<\/p>\n<blockquote>\n<p><a href=\"https:\/\/api.github.com\/repos\/&lt;ORG&gt;\/&lt;REPO-NAME&gt;\/commits\/&lt;HASH&gt;\" rel=\"noopener noreferrer nofollow\">https:\/\/api.github.com\/repos\/&lt;ORG&gt;\/&lt;REPO-NAME&gt;\/commits\/&lt;HASH&gt;<\/a><\/p>\n<p><a href=\"https:\/\/api.github.com\/repos\/github\/gitignore\/commits\/e9552d855c356b062ed82b83fcaacd230821a6eb\" rel=\"noopener noreferrer nofollow\">https:\/\/api.github.com\/repos\/github\/gitignore\/commits\/e9552d855c356b062ed82b83fcaacd230821a6eb<\/a><\/p>\n<\/blockquote>\n<p>\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c <a href=\"https:\/\/docs.github.com\/en\/rest\/using-the-rest-api\/rate-limits-for-the-rest-api?apiVersion=2022-11-28\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e<\/a> \u0434\u043e 5000 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0447\u0430\u0441. \u041d\u0435\u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u2014 \u0432\u0441\u0435\u0433\u043e 60. \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043e\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 <code>x-ratelimit-remaining <\/code>\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a API \u0443 \u0432\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.\u00a0<\/p>\n<h4>\u041f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 GitHub.com<\/h4>\n<p>\u041a\u043e\u043c\u043c\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 GitHub. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440:\u00a0<\/p>\n<blockquote>\n<p><a href=\"https:\/\/github.com\/&lt;ORG&gt;\/&lt;REPO-NAME&gt;\/commit\/&lt;HASH&gt;\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/&lt;ORG&gt;\/&lt;REPO-NAME&gt;\/commit\/&lt;HASH&gt;<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/github\/gitignore\/commit\/e9552d855c356b062ed82b83fcaacd230821a6eb\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/github\/gitignore\/commit\/e9552d855c356b062ed82b83fcaacd230821a6eb<\/a><\/p>\n<\/blockquote>\n<p>\u0425\u043e\u0442\u044f \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435\u0442, \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435 WAF GitHub \u043c\u043e\u0436\u0435\u0442 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<h2>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0438\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b: \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 GitHub, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442\u044b \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432, \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u044b (\u0445\u044d\u0448<code>before<\/code>), \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 TruffleHog. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0451 \u0432\u043e\u0435\u0434\u0438\u043d\u043e.<\/p>\n<p>\u0425\u043e\u0442\u044f\u2026 \u0417\u0430\u0447\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u043e? \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 Truffle Security \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 <a href=\"https:\/\/github.com\/trufflesecurity\/force-push-scanner\" rel=\"noopener noreferrer nofollow\">Force Push Secret Scanner<\/a> \u2014 open-source \u0442\u0443\u043b\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0449\u0435\u0442 \u0432 GH Archive \u0432\u0441\u0435 \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0441 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438.\u00a0<\/p>\n<blockquote>\n<p><strong><em>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440:<\/em><\/strong><em> \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430\u043c \u043f\u043e \u043a\u0438\u0431\u0435\u0440\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (\u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, blue team) \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0443\u0433\u0440\u043e\u0437\u0443. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/em><\/p>\n<\/blockquote>\n<p>\u0412\u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430:<\/p>\n<pre><code>python force_push_scanner.py --db-file \/path\/to\/force_push_commits.sqlite3 --scan &lt;github_org\/user&gt;<\/code><\/pre>\n<h2>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043e\u0445\u043e\u0442\u0443 \u0437\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u043c\u0438<\/h2>\n<p>\u042f \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0441\u0435 \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u043d\u0430 GitHub \u0441 2020 \u0433\u043e\u0434\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0432\u043e\u0435\u0439 \u043d\u043e\u0432\u043e\u0439 \u0442\u0443\u043b\u044b \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0442\u044b\u0441\u044f\u0447\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432. \u041d\u043e \u043a\u0430\u043a \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u2014 \u0442\u0435, \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043a\u0440\u0443\u043f\u043d\u044b\u043c\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438?\u00a0<\/p>\n<p>\u041c\u043e\u0439 \u0440\u0435\u0446\u0435\u043f\u0442 \u0443\u0441\u043f\u0435\u0445\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u043b \u0432\u0441\u0435\u0433\u043e \u0442\u0440\u0438 \u0438\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u0430: \u0440\u0443\u0447\u043d\u043e\u0439 \u043e\u0442\u0431\u043e\u0440 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432, \u0432\u0430\u0439\u0431-\u043a\u043e\u0434\u0438\u043d\u0433 \u0438 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 (\u043a\u0443\u0434\u0430 \u0436\u0435 \u0431\u0435\u0437 \u043d\u0438\u0445).<\/p>\n<h3>\u0420\u0443\u0447\u043d\u043e\u0439 \u043f\u043e\u0438\u0441\u043a<\/h3>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0421\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u043c\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u043a\u0440\u0435\u0442 \u0432 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e\u043c JSON-\u0444\u0430\u0439\u043b\u0435. \u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d2f\/dec\/7db\/d2fdec7db72351111c8c7d2968065bfc.png\" width=\"1362\" height=\"618\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d2f\/dec\/7db\/d2fdec7db72351111c8c7d2968065bfc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d2f\/dec\/7db\/d2fdec7db72351111c8c7d2968065bfc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u044f \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043b \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u043b \u0432\u0441\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c\u0438 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 (gmail.com, outlook.com, mail.ru \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435) \u0438 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043b\u0441\u044f \u043d\u0430 \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u0441 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u043e\u0439. \u0425\u043e\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438 \u043d\u0435\u0438\u0434\u0435\u0430\u043b\u0435\u043d, \u043e\u043d \u0441\u0442\u0430\u043b \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439. \u041c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b.\u00a0<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a \u0447\u0435\u043c\u0443 \u043e\u043d \u0434\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u043a\u0442\u043e \u0438\u043c \u0432\u043b\u0430\u0434\u0435\u0435\u0442. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u043a open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b (<a href=\"https:\/\/github.com\/NikhilPanwar\/secrets-ninja\" rel=\"noopener noreferrer nofollow\">secrets-ninja<\/a>, <a href=\"https:\/\/github.com\/trufflesecurity\/trufflehog?tab=readme-ov-file#mag-analyze\" rel=\"noopener noreferrer nofollow\">TruffleHog Analyze<\/a>), \u0442\u0430\u043a \u0438 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b.\u00a0<\/p>\n<p>\u042f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b \u0442\u0430\u043a\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0430\u0433-\u0431\u0430\u0443\u043d\u0442\u0438. \u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043b \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0430\u0436\u043d\u043e\u0435 \u0438\u043b\u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0435, \u0440\u0435\u043f\u043e\u0440\u0442\u0438\u043b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0431\u0430\u0433\u0431\u0430\u0443\u043d\u0442\u0438-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443.<\/p>\n<h3>\u0412\u0430\u0439\u0431-\u043a\u043e\u0434\u0438\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u0442\u0440\u0438\u0430\u0436\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0442\u043d\u0438-\u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0443\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0441 \u043c\u0435\u043d\u044f \u0445\u0432\u0430\u0442\u0438\u0442: \u043f\u043e\u0440\u0430 \u0431\u044b\u043b\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/vercel.com\/docs\/v0\" rel=\"noopener noreferrer nofollow\">Vercel v0<\/a> \u044f \u043d\u0430\u0432\u0430\u0439\u0431\u043a\u043e\u0434\u0438\u043b \u0446\u0435\u043b\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432.\u00a0<\/p>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0431\u044b\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439: \u0447\u0438\u0441\u0442\u044b\u0439 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0431\u0435\u0437 \u0431\u044d\u043a\u0435\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b <strong>.zip<\/strong> \u0441 JSON-\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043e\u0442 \u0441\u043a\u0430\u043d\u0435\u0440\u0430 \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0438\u0445 \u0432 \u0432\u0438\u0434\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430. \u042f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0442\u043c\u0435\u0447\u0430\u043b, \u043a\u0430\u043a\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u043a\u0438 \u0443\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b, \u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u0446\u0435\u043f\u043b\u044f\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ddb\/f02\/cf4\/ddbf02cf457cc4629fc11cafc0da9ad7.png\" width=\"1366\" height=\"752\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ddb\/f02\/cf4\/ddbf02cf457cc4629fc11cafc0da9ad7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ddb\/f02\/cf4\/ddbf02cf457cc4629fc11cafc0da9ad7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0410 \u0435\u0449\u0451 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432, \u0438 \u043e\u043d\u0438 \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0434\u0430\u043b\u0438 \u043f\u0430\u0440\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439.\u00a0<\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u043f\u043e \u043c\u0435\u0441\u044f\u0446\u0430\u043c \u044f\u0441\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b: \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0447\u0430\u0449\u0435 \u0443\u0436\u0435 \u043e\u0442\u043e\u0437\u0432\u0430\u043d\u044b \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u044b. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3e9\/998\/f3d\/3e9998f3df89a1048b7af498a0c7f8ff.png\" alt=\"\u0427\u0435\u043c \u0441\u0432\u0435\u0436\u0435\u0435 \u043a\u043e\u043c\u043c\u0438\u0442 \u2014 \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0448\u0430\u043d\u0441\u043e\u0432, \u0447\u0442\u043e \u0441\u0435\u043a\u0440\u0435\u0442 \u0435\u0449\u0451 \u0430\u043a\u0442\u0438\u0432\u0435\u043d\" title=\"\u0427\u0435\u043c \u0441\u0432\u0435\u0436\u0435\u0435 \u043a\u043e\u043c\u043c\u0438\u0442 \u2014 \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0448\u0430\u043d\u0441\u043e\u0432, \u0447\u0442\u043e \u0441\u0435\u043a\u0440\u0435\u0442 \u0435\u0449\u0451 \u0430\u043a\u0442\u0438\u0432\u0435\u043d\" width=\"1369\" height=\"746\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/3e9\/998\/f3d\/3e9998f3df89a1048b7af498a0c7f8ff.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3e9\/998\/f3d\/3e9998f3df89a1048b7af498a0c7f8ff.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0427\u0435\u043c \u0441\u0432\u0435\u0436\u0435\u0435 \u043a\u043e\u043c\u043c\u0438\u0442 \u2014 \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0448\u0430\u043d\u0441\u043e\u0432, \u0447\u0442\u043e \u0441\u0435\u043a\u0440\u0435\u0442 \u0435\u0449\u0451 \u0430\u043a\u0442\u0438\u0432\u0435\u043d<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0427\u0435\u043c\u043f\u0438\u043e\u043d\u043e\u043c \u043f\u043e \u0443\u0442\u0435\u0447\u043a\u0430\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c MongoDB. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a? \u041f\u043e\u043b\u0430\u0433\u0430\u044e, \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b \u0438 \u0434\u0436\u0443\u043d\u044b \u0447\u0430\u0449\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u043a\u043b\u044e\u0447\u0438 \u043e\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432 \u0442\u0430\u043a\u0438\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435\u0442.\u00a0<\/p>\n<p>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0446\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0445\u043e\u0434\u043a\u0430\u043c\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0442\u043e\u043a\u0435\u043d\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 GitHub (personal access token, PAT) \u0438 \u0443\u0447\u0435\u0442\u043a\u0438 AWS. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u0438 \u0441\u0430\u043c\u044b\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u044f \ud83d\ude42<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/574\/125\/906\/574125906087d35fc76bc32c720c64f9.png\" width=\"1340\" height=\"765\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/574\/125\/906\/574125906087d35fc76bc32c720c64f9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/574\/125\/906\/574125906087d35fc76bc32c720c64f9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c57\/296\/78d\/c5729678dc24fada55e5639484cfa667.png\" width=\"1364\" height=\"526\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c57\/296\/78d\/c5729678dc24fada55e5639484cfa667.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c57\/296\/78d\/c5729678dc24fada55e5639484cfa667.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u0433\u0440\u0430\u0444\u0438\u043a \u043f\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0443\u0442\u0435\u0447\u0435\u043a \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c: \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043b\u0438\u0434\u0435\u0440 \u043f\u043e \u0443\u0442\u0435\u0447\u043a\u0430\u043c \u2014 \u0444\u0430\u0439\u043b <strong>.env<\/strong>.\u00a0<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a43\/bb3\/848\/a43bb3848612ee0e77dbe210072d7518.png\" alt=\"\u041d\u0430\u0440\u044f\u0434\u0443 \u0441 .env-\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0443\u0442\u0435\u043a\u0430\u043b\u0438: index.js, application.properties, app.js, server.js, .env.example, docker-compose.yml, Unknown, README.md, main.py, appsettings.json, db.js, .env.local, settings.py, config.py, app.py, config.env, application.yml, config.json, config.js, WeatherManager.swift, .env.production, database.js, hardhat.config.js, script.js, App.js, .env.development, hardhat.config.ts, index.ts, config.ts, secrets.txt, main.js, index.html, docusaurus.config.js, default.json, Dockerfile, vercel.json, application-dev.yml, api-client.ts, docker-compose.yaml, api_keys.py\" title=\"\u041d\u0430\u0440\u044f\u0434\u0443 \u0441 .env-\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0443\u0442\u0435\u043a\u0430\u043b\u0438: index.js, application.properties, app.js, server.js, .env.example, docker-compose.yml, Unknown, README.md, main.py, appsettings.json, db.js, .env.local, settings.py, config.py, app.py, config.env, application.yml, config.json, config.js, WeatherManager.swift, .env.production, database.js, hardhat.config.js, script.js, App.js, .env.development, hardhat.config.ts, index.ts, config.ts, secrets.txt, main.js, index.html, docusaurus.config.js, default.json, Dockerfile, vercel.json, application-dev.yml, api-client.ts, docker-compose.yaml, api_keys.py\" width=\"1103\" height=\"968\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a43\/bb3\/848\/a43bb3848612ee0e77dbe210072d7518.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a43\/bb3\/848\/a43bb3848612ee0e77dbe210072d7518.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u041d\u0430\u0440\u044f\u0434\u0443 \u0441 .env-\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0443\u0442\u0435\u043a\u0430\u043b\u0438: index.js, application.properties, app.js, server.js, .env.example, docker-compose.yml, Unknown, README.md, main.py, appsettings.json, db.js, .env.local, settings.py, config.py, app.py, config.env, application.yml, config.json, config.js, WeatherManager.swift, .env.production, database.js, hardhat.config.js, script.js, App.js, .env.development, hardhat.config.ts, index.ts, config.ts, secrets.txt, main.js, index.html, docusaurus.config.js, default.json, Dockerfile, vercel.json, application-dev.yml, api-client.ts, docker-compose.yaml, api_keys.py<\/em><\/figcaption><\/div>\n<\/figure>\n<h3>\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442<\/h3>\n<p>\u041c\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0442\u0440\u0438\u0430\u0436\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e, \u043d\u043e \u043e\u0442\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u0445\u043e\u0434\u043a\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u2014 \u0437\u0430\u043d\u044f\u0442\u0438\u0435 \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u043e\u0435. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u043a\u0440\u0435\u0442\u044b, \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u043c \u043e\u043d\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b. \u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0443 \u043d\u0430 LLAMA, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0446\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b.\u00a0<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0444\u043b\u0430\u0439\u043d-\u0430\u0433\u0435\u043d\u0442, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432\u0430\u0436\u043d\u044b \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0431\u0430\u0433-\u0431\u0430\u0443\u043d\u0442\u0438 \u0438\u043b\u0438 \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e. \u042f \u043d\u0430\u0447\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434 \u043d\u0438\u043c \u043f\u0440\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u043c\u043e\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u0430 <a href=\"https:\/\/il.linkedin.com\/in\/moti-harmats\" rel=\"noopener noreferrer nofollow\">\u041c\u043e\u0442\u0438 \u0425\u0430\u0440\u043c\u0430\u0446\u0430<\/a>. \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u043a\u0430 \u0440\u0430\u043d\u043e \u2014 \u043c\u043d\u0435 \u0435\u0449\u0451 \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0434\u0435\u043b\u0430\u0442\u044c. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:\u00a0<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d02\/f9c\/21f\/d02f9c21f00b134259abdfd1ae30147c.png\" width=\"1600\" height=\"855\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d02\/f9c\/21f\/d02f9c21f00b134259abdfd1ae30147c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d02\/f9c\/21f\/d02f9c21f00b134259abdfd1ae30147c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u041a\u0435\u0439c: \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043a\u0440\u0443\u043f\u043d\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0439 \u0432\u0437\u043b\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u043e\u043a<\/h3>\n<p>\u0412 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u044f \u043d\u0430\u0448\u0435\u043b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430 GitHub (<a href=\"https:\/\/docs.github.com\/en\/authentication\/keeping-your-account-and-data-secure\/managing-your-personal-access-tokens\" rel=\"noopener noreferrer nofollow\">PAT<\/a>), \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443. \u041e\u043d \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0443\u0442\u0435\u0447\u043a\u0443 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u043a\u0440\u0435\u0442\u0430, \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0432 \u0441\u0432\u043e\u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (dot files).\u00a0<\/p>\n<p>\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0442\u043e\u043a\u0435\u043d \u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e \u043e\u043d \u0434\u0430\u0435\u0442 \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0412\u0421\u0415\u041c<strong> <\/strong>\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c <a href=\"https:\/\/github.com\/istio\/istio\" rel=\"noopener noreferrer nofollow\">Istio<\/a>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9e0\/36a\/aec\/9e036aaec374c005a1548c5ea4668641.png\" width=\"938\" height=\"920\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9e0\/36a\/aec\/9e036aaec374c005a1548c5ea4668641.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9e0\/36a\/aec\/9e036aaec374c005a1548c5ea4668641.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Istio \u2014 \u044d\u0442\u043e \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u0430\u044f service mesh-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438. \u0423 <a href=\"https:\/\/github.com\/istio\/istio\" rel=\"noopener noreferrer nofollow\">\u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f Istio<\/a> 36 \u0442\u044b\u0441\u044f\u0447 \u0437\u0432\u0435\u0437\u0434 \u0438 8 \u0442\u044b\u0441\u044f\u0447 \u0444\u043e\u0440\u043a\u043e\u0432. \u0418\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u0431\u0430\u0437\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b) \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u044f Google, IBM, Red Hat \u0438 \u0434\u0440\u0443\u0433\u0438\u0445.\u00a0<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/447\/64f\/92c\/44764f92c41369b8ab4c3f2db0868378.png\" width=\"1247\" height=\"622\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/447\/64f\/92c\/44764f92c41369b8ab4c3f2db0868378.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/447\/64f\/92c\/44764f92c41369b8ab4c3f2db0868378.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c: \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u0443\u0440\u043e\u0432\u043d\u044f ADMIN \u043a\u043e \u0432\u0441\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c Itsio (<a href=\"https:\/\/github.com\/istio\/\" rel=\"noopener noreferrer nofollow\">\u0430 \u0438\u0445 \u043c\u043d\u043e\u0433\u043e<\/a>). \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f \u043c\u043e\u0433:<\/p>\n<ul>\n<li>\n<p>\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0443\u0448\u0438\u0442\u044c \u043a\u043e\u0434;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0440\u0435\u043b\u0438\u0437\u044b;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c.\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u0430\u0441\u0448\u0442\u0430\u0431 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u043e\u043a \u2014 \u043f\u0443\u0433\u0430\u044e\u0449\u0438\u0439. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0443 Istio \u0435\u0441\u0442\u044c <a href=\"https:\/\/istio.io\/latest\/docs\/releases\/security-vulnerabilities\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0431\u0430\u0433-\u0440\u0435\u043f\u043e\u0440\u0442\u043e\u0432<\/a>. \u0418\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0442\u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u2014 \u0442\u043e\u043a\u0435\u043d \u0431\u044b\u043b \u043e\u0442\u043e\u0437\u0432\u0430\u043d \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044f \u0441\u043e\u043e\u0431\u0449\u0438\u043b \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435.\u00a0<\/p>\n<h2>\u0427\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435?<\/h2>\n<p>\u042d\u0442\u043e \u0431\u044b\u043b \u043e\u0447\u0435\u043d\u044c \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u042f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0438\u0434\u0435\u0439, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0438\u0441\u043a \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430\u0448\u0435\u043b \u0442\u044b\u0441\u044f\u0447\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u044b\u043b\u0438\u043b\u0438\u0441\u044c \u043d\u0430 GitHub \u0433\u043e\u0434\u0430\u043c\u0438. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043b \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u043e\u0445\u043e\u0442\u044b \u0437\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u043c\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u0438\u0441\u043a\u0430\u0442\u044c \u0438\u0433\u043e\u043b\u043a\u0438 \u0432 \u0441\u0442\u043e\u0433\u0435 \u0441\u0435\u043d\u0430. \u041d\u0443 \u0438 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0431\u043e\u043b\u0435\u0435 $25 000 \u043d\u0430 \u044d\u0442\u0438\u0445 \u043d\u0430\u0445\u043e\u0434\u043a\u0430\u0445. <\/p>\n<p>\u0427\u0435\u043c\u0443 \u043d\u0430\u0441 \u0443\u0447\u0438\u0442 \u044d\u0442\u043e\u0442 \u043a\u0435\u0439\u0441? \u041f\u043e\u043b\u0430\u0433\u0430\u044e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0441\u0442\u043e\u0438\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u043e\u0442 \u0443\u0442\u0435\u0447\u043a\u0438. \u0415\u0441\u043b\u0438 \u0441\u0435\u043a\u0440\u0435\u0442 \u043f\u043e\u043f\u0430\u043b \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e Git \u2014 \u0431\u0443\u0434\u044c \u0442\u043e \u0431\u043b\u043e\u0431, \u043a\u043e\u043c\u043c\u0438\u0442 \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451 \u2014 \u0441\u0447\u0438\u0442\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u043e\u043d \u0443\u0436\u0435 \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0437\u0432\u0430\u043d. \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u0442\u0430\u0442\u044c \u0430\u043a\u0441\u0438\u043e\u043c\u043e\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445, \u043a\u0442\u043e \u043f\u0438\u0448\u0435\u0442 \u0438 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0434.<\/p>\n<div class=\"persona\"><img decoding=\"async\" class=\"image persona__image\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b2\/212\/12b\/4b221212b25f6e82207b1fcc5d971a02.jpg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/4b2\/212\/12b\/4b221212b25f6e82207b1fcc5d971a02.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b2\/212\/12b\/4b221212b25f6e82207b1fcc5d971a02.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<h5 class=\"persona__heading\">PURP \u2014 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u043a\u0430\u043d\u0430\u043b, \u0433\u0434\u0435 \u043a\u0438\u0431\u0435\u0440\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u0431\u0430\u0440\u0440\u0438\u043a\u0430\u0434<\/h5>\n<p class=\"persona__text\"><a href=\"https:\/\/t.me\/purp_sec\" rel=\"noopener noreferrer nofollow\"><strong>t.me\/purp_sec<\/strong><\/a><strong>\u00a0\u2014 \u0438\u043d\u0441\u0430\u0439\u0434\u044b \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b \u0438\u0437 \u043c\u0438\u0440\u0430 \u044d\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0445\u0430\u043a\u0438\u043d\u0433\u0430 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0411\u0430\u0441\u0442\u0438\u043e\u043d\u0430<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/926994\/\"> https:\/\/habr.com\/ru\/articles\/926994\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0448\u0438 (<code>git push --force<\/code>), \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b\u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0438 \u0445\u043e\u0442\u044f\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0445 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.\u00a0<\/p>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442 \u0438\u0441\u0447\u0435\u0437. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 GitHub \u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u0438\u0440\u0430\u0435\u0442: \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439\u00bb \u043a\u043e\u043c\u043c\u0438\u0442 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e \u0445\u044d\u0448\u0443 \u2014 \u043f\u0443\u0441\u0442\u044c \u0438 \u0431\u0435\u0437 \u043f\u0440\u044f\u043c\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a. GitHub \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 <abbr class=\"habraabbr\" title=\"\u041a\u043e\u043c\u043c\u0438\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u043d\u0430 \u0432\u0435\u0442\u043a\u0430, \u0442\u0435\u0433 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Git.\" data-title=\"&lt;p&gt;\u041a\u043e\u043c\u043c\u0438\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u043d\u0430 \u0432\u0435\u0442\u043a\u0430, \u0442\u0435\u0433 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Git.  &lt;\/p&gt;\" data-abbr=\"\u00ab\u0412\u0438\u0441\u044f\u0447\u0438\u0439\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\">\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u043d\u0430 \u0432\u0435\u0442\u043a\u0430, \u0442\u0435\u0433 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Git.  &lt;\/p&gt;&#187; data-abbr=&#187;\u00ab\u0412\u0438\u0441\u044f\u0447\u0438\u0439\u00bb \u043a\u043e\u043c\u043c\u0438\u0442&#187;>\u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u044b<\/abbr> (dangling commit) \u0432\u0435\u0447\u043d\u043e, \u0430 \u0432 GH Archive \u0442\u0430\u043a\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442\u044b \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 (zero-commit PushEvents).\u00a0<\/p>\n<p>\u042f \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0441\u0435 \u0442\u0430\u043a\u0438\u0435 \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442\u044b \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u044f\u0442\u044c \u043b\u0435\u0442 \u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u043b \u0438\u0437 \u043d\u0438\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u044b, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0440\u0443\u0447\u0438\u043b \u043f\u043e\u0440\u044f\u0434\u043a\u0430 $25 000 \u043f\u043e \u0431\u0430\u0433-\u0431\u0430\u0443\u043d\u0442\u0438. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 Truffle Security \u043c\u044b \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f <a href=\"https:\/\/github.com\/trufflesecurity\/force-push-scanner\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043e\u0442\u044b\u0441\u043a\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u0441 \u0437\u0430\u0431\u044b\u0442\u044b\u043c\u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u043c\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0434\u043e \u043d\u0438\u0445 \u0434\u043e\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043a\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<figure class=\"full-width\">\n<div><figcaption><em>Open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <\/em><a href=\"https:\/\/github.com\/trufflesecurity\/force-push-scanner\" rel=\"noopener noreferrer nofollow\"><em>Force Push Secret Scanner<\/em><\/a><em>, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432 \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0445\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u0445 <\/em><\/figcaption><\/div>\n<\/figure>\n<hr\/>\n<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 <a href=\"https:\/\/www.linkedin.com\/in\/sharonbrizinov\/\" rel=\"noopener noreferrer nofollow\">\u0428\u0430\u0440\u043e\u043d \u0411\u0440\u0438\u0437\u0438\u043d\u043e\u0432<\/a>. \u042f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u043e\u0432 \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 OT\/IoT, \u043d\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0431\u0435\u0440\u0443\u0441\u044c \u0438 \u0437\u0430 \u0431\u0430\u0433-\u0431\u0430\u0443\u043d\u0442\u0438.<\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b <a href=\"https:\/\/medium.com\/@sharon.brizinov\/how-i-made-64k-from-deleted-files-a-bug-bounty-story-c5bd3a6f5f9b\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0441\u0442<\/a> \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b $64 000, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044f \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c\u0438 <em>[<\/em><a href=\"https:\/\/habr.com\/ru\/companies\/bastion\/articles\/916752\/\" rel=\"noopener noreferrer nofollow\"><em>\u043f\u0435\u0440\u0435\u0432\u043e\u0434<\/em><\/a><em> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435]<\/em>. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0436\u0438\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438.\u00a0<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0430\u043b\u0441\u044f \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441 CEO Truffle Security \u0414\u0438\u043b\u0430\u043d\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0438\u0434\u0435\u0439 \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043a\u0440\u0443\u043f\u043d\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u043e\u0439 \u043e\u0445\u043e\u0442\u044b \u0437\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u043c\u0438.\u00a0<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0434\u0435\u0435 \u2014 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/docs.github.com\/en\/rest\/using-the-rest-api\/github-event-types?apiVersion=2022-11-28\" rel=\"noopener noreferrer nofollow\">GitHub Event API<\/a> \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c <a href=\"https:\/\/www.gharchive.org\/\" rel=\"noopener noreferrer nofollow\">GH Archive<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442\u044b \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432.\u00a0<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0435\u043a\u0442\u044b, \u0431\u043b\u043e\u0433\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u043c\u043d\u0435 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p><a href=\"https:\/\/docs.github.com\/en\/rest\/using-the-rest-api\/github-event-types?apiVersion=2022-11-28\" rel=\"noopener noreferrer nofollow\">GitHub Event API<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/neodyme.io\/en\/blog\/github_secrets\/\" rel=\"noopener noreferrer nofollow\">Hidden GitHub Commits and How to Reveal Them by <\/a><a href=\"http:\/\/Neodyme.io\" rel=\"noopener noreferrer nofollow\">Neodyme.io<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/trufflesecurity.com\/blog\/anyone-can-access-deleted-and-private-repo-data-github\" rel=\"noopener noreferrer nofollow\">Anyone can Access Deleted and Private Repository Data on GitHub by TruffleHog<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/trufflesecurity.com\/blog\/trufflehog-now-finds-all-deleted-and-private-commits-on-github\" rel=\"noopener noreferrer nofollow\">TruffleHog now finds all Deleted &amp; Private Commits on GitHub by TruffleHog<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/trufflesecurity.com\/blog\/trufflehog-scans-deleted-git-branches\" rel=\"noopener noreferrer nofollow\">TruffleHog Scans Deleted Git Branches by TruffleHog<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.aquasec.com\/blog\/undetected-hard-code-secrets-expose-corporations\/\" rel=\"noopener noreferrer nofollow\">Phantom Secrets: Undetected Secrets Expose Major Corporations by Aqua Security<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.gharchive.org\/\" rel=\"noopener noreferrer nofollow\">gharchive<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043b \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0445\u043e\u0442\u0443 \u043d\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u044b. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u043d\u0430 GitHub \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442 \u2014 \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044e, \u043a\u0430\u043a \u043d\u0430\u0439\u0442\u0438 <strong>\u0432\u0441\u0435 \u00ab<\/strong>\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u044b.<\/p>\n<h2>\u0427\u0442\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0430?<\/h2>\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/companies\/bastion\/articles\/916752\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u043e\u0441\u0442\u0435<\/a> \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 GitHub \u0444\u0430\u0439\u043b\u044b, \u0441\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0435\u00bb \u0431\u043b\u043e\u0431\u044b (dangling blobs) \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0438 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043c\u0438\u0442 \u0438\u043b\u0438 \u0434\u0435\u0440\u0435\u0432\u043e\u2026 \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u044f \u0442\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u043b. \u041f\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u0432 \u0441 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 Truffle, \u044f \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u043c\u0443 \u0431\u043b\u043e\u0431\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0432\u043e\u0439 \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0439\u00bb \u043a\u043e\u043c\u043c\u0438\u0442. \u0422\u043e\u0433\u0434\u0430 \u044f \u043f\u0440\u043e\u0432\u0435\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438<strong> <\/strong>\u043d\u0430\u0448\u0435\u043b \u0441\u043f\u043e\u0441\u043e\u0431,<strong> <\/strong>\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c 100% \u0442\u0430\u043a\u0438\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 GitHub.\u00a0<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b\u0438 \u0438 \u0437\u0430\u043f\u0443\u0448\u0438\u043b\u0438 \u0441\u0435\u043a\u0440\u0435\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u041a\u0430\u043a \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c? \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 <code>HEAD<\/code> \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043a\u043e\u043c\u043c\u0438\u0442\u0443 \u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0443\u0448\u0430\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043e\u043c\u043c\u0438\u0442, \u0434\u0435\u043b\u0430\u044f \u0435\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c. \u041d\u043e, \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438 <a href=\"https:\/\/neodyme.io\/en\/blog\/github_secrets\/\" rel=\"noopener noreferrer nofollow\">neodyme<\/a> \u0438 <a href=\"https:\/\/trufflesecurity.com\/blog\/anyone-can-access-deleted-and-private-repo-data-github\" rel=\"noopener noreferrer nofollow\">TruffleHog<\/a>, \u0434\u0430\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f GitHub \u043f\u043e\u043c\u043d\u0438\u0442 \u0435\u0433\u043e \u0432\u0435\u0447\u043d\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0445\u044d\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u0442\u043e \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0441\u0442\u0435\u0440\u0442\u044b\u043c. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a <a href=\"https:\/\/trufflesecurity.com\/blog\/trufflehog-now-finds-all-deleted-and-private-commits-on-github\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438<\/a> TruffleHog, \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0434\u0430\u0436\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0445\u044d\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u0430.<\/p>\n<h3>\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448\u0438\u043d\u0433: \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/h3>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u043e\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/SharonBrizinov\/test-oops-commit\" rel=\"noopener noreferrer nofollow\">test-oops-commit<\/a>. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 <a href=\"https:\/\/github.com\/SharonBrizinov\/test-oops-commit\/commit\/9eedfa00983b7269a75d76ec5e008565c2eff2ef\" rel=\"noopener noreferrer nofollow\">9eedfa00983b7269a75d76ec5e008565c2eff2ef<\/a>.\u00a0<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u043f\u0440\u043e\u0441\u0442\u043e\u0439 bash-\u0441\u043a\u0440\u0438\u043f\u0442 <code>get_commits.sh<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u0438\u043f\u0430 <a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Git-Internals-Git-Objects\" rel=\"noopener noreferrer nofollow\">commit, tree \u0438 blob<\/a>:<\/p>\n<pre><code class=\"bash\">git rev-list --all | while read commit; do    echo \"Commit: $commit\"    git cat-file -p \"$commit\" | grep '^tree\\|^parent'    git ls-tree -r \"$commit\"    echo  done<\/code><\/pre>\n<p>\u041c\u044b \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0441 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c (\u0432 \u043d\u0435\u043c \u2014 \u0444\u0430\u0439\u043b <strong>README.md<\/strong>):<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b <strong>secret.txt<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0435\u0436\u0438\u0442 \u043d\u0430\u0448 \u0441\u0435\u043a\u0440\u0435\u0442 <strong>my-password-is-iloveu<\/strong>. \u041c\u044b \u00ab\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043c \u0438 \u043f\u0443\u0448\u0438\u043c \u0441\u0435\u043a\u0440\u0435\u0442 \u043d\u0430 GitHub.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412 \u0434\u0435\u0440\u0435\u0432\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442<strong> 9eedfa<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043d\u043e\u0432\u044b\u043c \u0434\u0435\u0440\u0435\u0432\u043e\u043c \u0438 \u043d\u043e\u0432\u044b\u043c \u0431\u043b\u043e\u0431\u043e\u043c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430<strong> secret.txt<\/strong>. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u0438\u0434\u043d\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 <code>git rev-list --all<\/code>, <code>git log<\/code> \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 GitHub.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0423\u043f\u0441! \u041c\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443, \u0438 \u0440\u0435\u0448\u0430\u0435\u043c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442. <\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c <code>HEAD<\/code> \u0432\u0435\u0442\u043a\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 \u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0441\u043d\u043e\u0432\u0430 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0434\u0435\u0440\u0435\u0432\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432. \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043a\u043e\u043c\u043c\u0438\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u0447\u0435\u0437!<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041d\u043e&#8230; \u043c\u044b-\u0442\u043e \u043f\u043e\u043c\u043d\u0438\u043c \u0445\u044d\u0448 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430. \u041f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 URL \u0438 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f: <a href=\"https:\/\/github.com\/SharonBrizinov\/test-oops-commit\/commit\/9eedfa00983b7269a75d76ec5e008565c2eff2ef\" rel=\"noopener noreferrer nofollow\">9eedfa00983b7269a75d76ec5e008565c2eff<\/a>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0434\u0430\u0436\u0435 \u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u2014 9eed \u2014 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043c\u043c\u0438\u0442\u0443.\u00a0<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442 \u043d\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0432\u0435\u0442\u043a\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442?<\/h3>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0430\u0442\u0430 (<code>git reset --hard HEAD~1<\/code> \u0438 <code>git push --force<\/code>), \u0432\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0435 \u0438\u0437 \u0432\u0435\u0442\u043a\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u043e\u043c\u043c\u0438\u0442, \u0434\u0435\u043b\u0430\u044f \u0435\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u043c \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 Git (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>git log<\/code> \u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u043a\u0430\u0436\u0435\u0442). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u043c\u043c\u0438\u0442 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 GitHub, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e GitHub \u0445\u0440\u0430\u043d\u0438\u0442 reflog.\u00a0<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443? \u0422\u043e\u0447\u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u044e, \u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e GitHub <a href=\"https:\/\/docs.github.com\/en\/pull-requests\/collaborating-with-pull-requests\/working-with-forks\/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility\" rel=\"noopener noreferrer nofollow\">\u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c\u0435\u043a\u0438<\/a>. GitHub \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e git-\u0441\u0435\u0440\u0432\u0435\u0440. \u042d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u0439: \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u044b, \u0444\u043e\u0440\u043a\u0438, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.\u00a0<\/p>\n<p>\u041c\u043e\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435: \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0444\u0438\u0447 GitHub \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u2014 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0438\u0445. \u0412\u043e\u0442 \u043f\u0430\u0440\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u044b? \u041a\u0430\u043a \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 <a href=\"https:\/\/www.aquasec.com\/blog\/undetected-hard-code-secrets-expose-corporations\/\" rel=\"noopener noreferrer nofollow\">Aqua Security<\/a>, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0432 \u0432\u0441\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<\/li>\n<\/ul>\n<pre><code>git -c \"remote.origin.fetch=+refs\/*:refs\/remotes\/origin\/*\" fetch origin<\/code><\/pre>\n<ul>\n<li>\n<p>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0435\u0442\u044c \u0444\u043e\u0440\u043a\u043e\u0432 GitHub? \u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u00ab\u0444\u043e\u0440\u043a\u0430\u0435\u043c\u00bb \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439? \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u044d\u0442\u0438\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 (\u0430\u0443\u0434\u0438\u0442? \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433?) GitHub \u0445\u0440\u0430\u043d\u0438\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0438\u0445, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 <code>HEAD<\/code> \u0438 \u00ab\u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0435\u00bb \u043a\u043e\u043c\u043c\u0438\u0442.<\/p>\n<h2>GitHub Event API<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c. \u041d\u043e \u043d\u0430\u043c \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0445\u044d\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439:).\u00a0<\/p>\n<p>\u041a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0443 TruffleHog \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 <a href=\"https:\/\/trufflesecurity.com\/blog\/trufflehog-now-finds-all-deleted-and-private-commits-on-github\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/a>. \u041d\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u2014 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043b\u043e\u0445\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0434\u0435\u043d\u044c-\u0434\u0432\u0430 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.<\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0420\u0435\u0447\u044c \u043e GitHub Event API \u2014 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c REST API GitHub, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435. \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\n<p>\u043f\u0443\u0448\u0438\u043d\u0433 \u043a\u043e\u0434\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0438\u043b\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 issue \u0438\u043b\u0438 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043a\u043e\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0432\u0435\u0437\u0434\u044b \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u0430\u043c\u0438:\u00a0<\/p>\n<pre><code>curl http:\/\/api.github.com\/events<\/code><\/pre>\n<p>\u041f\u0430\u0440\u0430 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0439:<\/p>\n<ul>\n<li>\n<p>\u041d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 API-\u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438!<\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 GitHub, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/docs.github.com\/en\/rest\/using-the-rest-api\/github-event-types?apiVersion=2022-11-28\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u0445 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 GitHub \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0445\u044d\u0448\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432. \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c! \u041d\u043e \u044d\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u2014 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u0447\u0430\u0441. \u0410 \u043a\u0430\u043a \u0436\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f? \u041e\u043d\u0438 \u0434\u043b\u044f \u043d\u0430\u0441 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b?<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u043d\u0430\u0441, \u0435\u0449\u0451 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a <a href=\"https:\/\/github.com\/igrigorik\" rel=\"noopener noreferrer nofollow\">\u0418\u043b\u044c\u044f \u0413\u0440\u0438\u0433\u043e\u0440\u0438\u043a<\/a> \u0441\u043e\u0437\u0434\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439 GitHub \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/igrigorik\/gharchive.org\" rel=\"noopener noreferrer nofollow\">GH Archive<\/a>, \u0435\u0433\u043e \u0441\u0430\u0439\u0442 \u2014 <a href=\"http:\/\/gharchive.org\" rel=\"noopener noreferrer nofollow\">gharchive.org<\/a>.\u00a0<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 \u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 GitHub \u0437\u0430 1 \u044f\u043d\u0432\u0430\u0440\u044f 2015 \u0433\u043e\u0434\u0430 \u0432 15:00 \u043f\u043e UTC, \u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"https:\/\/data.gharchive.org\/2015-01-01-15.json.gz\" rel=\"noopener noreferrer nofollow\">\u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<p>\u0412\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 PushEvent \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430 <strong>2015-01-01-15<\/strong>:\u00a0<\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 force push<\/h3>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0448\u0435\u043c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u043e\u043b\u044c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432.\u00a0<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0443\u0448-\u0438\u0432\u0435\u043d\u0442 Git \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432? \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u043b \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448 \u0441 \u043e\u0442\u043a\u0430\u0442\u043e\u043c \u0432\u0435\u0442\u043a\u0438 \u2014 \u043f\u043e \u0441\u0443\u0442\u0438, <code>HEAD<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0432\u0438\u043d\u0443\u043b\u0438 \u043d\u0430\u0437\u0430\u0434, \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u043d\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432! \u041a\u0430\u043a \u0443\u0436\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0442\u0435\u0440\u043c\u0438\u043d zero-commit PushEvents.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u0421\u043a\u0430\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 \u0441 GH Archive \u0438 \u043f\u043e\u0438\u0449\u0435\u043c \u0442\u0430\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435:\u00a0<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u043e\u0434\u043d\u043e \u0438\u0437 \u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 <code>commits<\/code> \u2014 \u043f\u0443\u0441\u0442\u043e\u0439. \u0410 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u043c\u043c\u0438\u0442 \u0434\u043e \u043d\u0435\u0433\u043e (<code>before<\/code>) \u2014 \u043d\u0430 \u0442\u043e\u0442, \u0447\u0442\u043e \u0431\u044b\u043b \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u00bb, \u2014 \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e GitHub \u0432\u0441\u0451 \u0435\u0449\u0451 \u0445\u0440\u0430\u043d\u0438\u0442 \u044d\u0442\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u043f\u0443\u0441\u0442\u044f \u0434\u0435\u0441\u044f\u0442\u044c \u043b\u0435\u0442!<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u043e\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0438\u0442:\u00a0<\/p>\n<blockquote>\n<p><a href=\"https:\/\/github.com\/grapefruit623\/gcloud-python\/commit\/e9c3d31212847723aec86ef96aba0a77f9387493\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/grapefruit623\/gcloud-python\/commit\/e9c3d31212847723aec86ef96aba0a77f9387493<\/a><\/p>\n<\/blockquote>\n<figure class=\"full-width\"><\/figure>\n<p>\u0417\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442 <code>before<\/code> \u043c\u043e\u0433 \u0431\u044b\u0442\u044c \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0448 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0437\u0430 \u0440\u0430\u0437.\u00a0<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u043d\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e (\u0438\u043b\u0438 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f), \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0445\u044d\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u043c\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e\u00bb \u043a\u043e\u043c\u043c\u0438\u0442\u0430 (\u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432) \u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0447\u0443\u0436\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0435 Git-\u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<ul>\n<li>\n<p>\u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <strong>\u0432 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/strong>. <code>--filter=blob:none<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0431\u0435\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432; <code>blobs; --no-checkout<\/code> \u2014 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c checkout \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 (<code>before<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TruffleHog. TruffleHog<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-467605","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/467605","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=467605"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/467605\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=467605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=467605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=467605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}