{"id":171,"date":"2024-12-19T10:11:17","date_gmt":"2024-12-19T09:11:17","guid":{"rendered":"https:\/\/blog.ctr24.co.pl\/?p=171"},"modified":"2026-02-04T12:55:42","modified_gmt":"2026-02-04T11:55:42","slug":"cheatsheet-ratowanie-commitow-w-git","status":"publish","type":"post","link":"https:\/\/blog.ctr24.co.pl\/?p=171","title":{"rendered":"Cheatsheet: Ratowanie commit\u00f3w w Git"},"content":{"rendered":"\n<p>Czasami podczas pracy w Git mo\u017ce zdarzy\u0107 si\u0119, \u017ce commit zostanie utracony lub zapomniany. Oto szybki przewodnik, jak odzyska\u0107 takie zmiany i doda\u0107 je z powrotem do aktywnej ga\u0142\u0119zi.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Zlokalizowanie utraconego commita<\/strong><\/h3>\n\n\n\n<p>U\u017cyj <code>git reflog<\/code>, aby wy\u015bwietli\u0107 histori\u0119 wszystkich ostatnich akcji, takich jak checkouty, commity czy mergowanie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git reflog\n<\/code><\/pre>\n\n\n\n<p>Znajd\u017a commit, kt\u00f3ry chcesz odzyska\u0107. Powinien wygl\u0105da\u0107 podobnie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>097c4ca HEAD@{5}: commit: Ustalenie kolejno\u015bci stacji, daty pomiar\u00f3w, dodanie select dystrykt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Sprawdzenie zawarto\u015bci commita<\/strong><\/h3>\n\n\n\n<p>Mo\u017cesz przej\u015b\u0107 do konkretnego commita, aby zobaczy\u0107 jego zawarto\u015b\u0107:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout &lt;hash&gt;\n<\/code><\/pre>\n\n\n\n<p>Wprowad\u017ca Ci\u0119 to w <strong>detached HEAD state<\/strong>, gdzie mo\u017cesz podejrze\u0107 pliki.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>Powr\u00f3t na aktywn\u0105 ga\u0142\u0119\u017a<\/strong><\/h3>\n\n\n\n<p>Prze\u0142\u0105cz si\u0119 z powrotem na ga\u0142\u0119\u017a, do kt\u00f3rej chcesz doda\u0107 zmiany (np. <code>HBV_ENS<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout HBV_ENS\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">4. <strong>Dodanie utraconego commita do ga\u0142\u0119zi<\/strong><\/h3>\n\n\n\n<p>U\u017cyj <code>git cherry-pick<\/code>, aby skopiowa\u0107 zmiany z utraconego commita do aktualnej ga\u0142\u0119zi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git cherry-pick &lt;hash&gt;\n<\/code><\/pre>\n\n\n\n<p>Przyk\u0142ad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git cherry-pick 097c4ca\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">5. <strong>Rozwi\u0105zywanie konflikt\u00f3w (je\u015bli wyst\u0105pi\u0105)<\/strong><\/h3>\n\n\n\n<p>Je\u015bli zmiany z commita powoduj\u0105 konflikty, Git zatrzyma proces i poprosi o ich rozwi\u0105zanie. W takiej sytuacji:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Otw\u00f3rz konflikty w edytorze (np. VSCode).<\/li>\n\n\n\n<li>Po ich rozwi\u0105zaniu zapisz pliki.<\/li>\n\n\n\n<li>Kontynuuj proces cherry-pick: <code>git cherry-pick --continue<\/code><\/li>\n<\/ol>\n\n\n\n<p>Je\u015bli chcesz przerwa\u0107 cherry-pick:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git cherry-pick --abort\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">6. <strong>Weryfikacja<\/strong><\/h3>\n\n\n\n<p>Sprawd\u017a histori\u0119 commit\u00f3w, aby upewni\u0107 si\u0119, \u017ce commit zosta\u0142 dodany do ga\u0142\u0119zi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git log --oneline --graph\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">7. <strong>Przes\u0142anie zmian do zdalnego repozytorium (opcjonalnie)<\/strong><\/h3>\n\n\n\n<p>Je\u015bli chcesz przes\u0142a\u0107 zmiany do zdalnego repozytorium:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git push origin &lt;nazwa_ga\u0142\u0119zi&gt;\n<\/code><\/pre>\n\n\n\n<p>Przyk\u0142ad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git push origin HBV_ENS\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Podsumowanie komend<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Akcja<\/th><th>Polecenie<\/th><\/tr><\/thead><tbody><tr><td>Wy\u015bwietlenie refloga<\/td><td><code>git reflog<\/code><\/td><\/tr><tr><td>Przej\u015bcie do konkretnego commita<\/td><td><code>git checkout &lt;hash&gt;<\/code><\/td><\/tr><tr><td>Powr\u00f3t na ga\u0142\u0119\u017a<\/td><td><code>git checkout &lt;nazwa_ga\u0142\u0119zi&gt;<\/code><\/td><\/tr><tr><td>Cherry-pick commita<\/td><td><code>git cherry-pick &lt;hash&gt;<\/code><\/td><\/tr><tr><td>Rozwi\u0105zanie konflikt\u00f3w<\/td><td><code>git cherry-pick --continue<\/code><\/td><\/tr><tr><td>Anulowanie cherry-pick<\/td><td><code>git cherry-pick --abort<\/code><\/td><\/tr><tr><td>Weryfikacja historii<\/td><td><code>git log --oneline --graph<\/code><\/td><\/tr><tr><td>Wysy\u0142anie zmian<\/td><td><code>git push origin &lt;nazwa_ga\u0142\u0119zi&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Teraz wiesz, jak uratowa\u0107 commity i doda\u0107 je z powrotem do aktywnej ga\u0142\u0119zi. Pami\u0119taj, aby zawsze sprawdza\u0107, na jakiej ga\u0142\u0119zi pracujesz, u\u017cyj\u0105c <strong><code>git status<\/code><\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Jak odzyska\u0107 wiele pomini\u0119tych commit\u00f3w i wstawi\u0107 do np.: <code>DEV_OD_20260121<\/code>?<\/h1>\n\n\n\n<p>Masz dwie opcje:<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>Opcja 1: Cherry\u2011pick commit\u00f3w po kolei<\/strong><\/h1>\n\n\n\n<p>Najprostsza i najczystsza.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Przejd\u017a na DEV_OD_20260121:<\/li>\n<\/ol>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout DEV_OD_20260121\n<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Cherry\u2011pickuj commit po commicie:<\/li>\n<\/ol>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git cherry-pick 718db55\ngit cherry-pick 0e46e9d\ngit cherry-pick fde88bf\ngit cherry-pick 3b6cfb9\ngit cherry-pick 22210ec\ngit cherry-pick 2293f80\n<\/code><\/pre>\n\n\n\n<p>Je\u015bli pojawi\u0105 si\u0119 konflikty \u2014 rozwi\u0105zujesz i robisz:<\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git cherry-pick --continue\n<\/code><\/pre>\n\n\n\n<p>Po wszystkim:<\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git push\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>Opcja 2: Stworzy\u0107 branch z refloga i zmergowa\u0107<\/strong><\/h1>\n\n\n\n<p>Je\u015bli chcesz odzyska\u0107 ca\u0142\u0105 tamt\u0105 histori\u0119 jako jeden branch:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Utw\u00f3rz branch od starego commita (np. 718db55):<\/li>\n<\/ol>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git branch odzyskane_zmiany 718db55\n<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Przejd\u017a na DEV_OD_20260121:<\/li>\n<\/ol>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout DEV_OD_20260121\n<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Zmerguj:<\/li>\n<\/ol>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git merge <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Czasami podczas pracy w Git mo\u017ce zdarzy\u0107 si\u0119, \u017ce commit zostanie utracony lub zapomniany. Oto szybki przewodnik, jak odzyska\u0107 takie<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-171","post","type-post","status-publish","format-standard","hentry","category-tips"],"_links":{"self":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts\/171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=171"}],"version-history":[{"count":3,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions"}],"predecessor-version":[{"id":349,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions\/349"}],"wp:attachment":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}