{"id":309,"date":"2026-01-09T19:40:45","date_gmt":"2026-01-09T18:40:45","guid":{"rendered":"https:\/\/blog.ctr24.co.pl\/?p=309"},"modified":"2026-01-09T19:56:58","modified_gmt":"2026-01-09T18:56:58","slug":"git-profesjonalny-workflow-ze-stash-temp-stash-cherry-pick","status":"publish","type":"post","link":"https:\/\/blog.ctr24.co.pl\/?p=309","title":{"rendered":"GIT: Profesjonalny workflow ze stash + temp\u2011stash + cherry\u2011pick"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\ud83c\udfaf Cel workflow<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>pracujesz swobodnie bez commit\u00f3w \u201ena brudno\u201d,<\/li>\n\n\n\n<li>stashujesz zmiany jako \u201ekoszyki robocze\u201d,<\/li>\n\n\n\n<li>przenosisz je mi\u0119dzy komputerami przez branch <code>temp-stash<\/code>,<\/li>\n\n\n\n<li>wybierasz konkretne zmiany cherry-pickiem,<\/li>\n\n\n\n<li>historia pozostaje czysta i logiczna.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">1\ufe0f\u20e3 <strong>Tworzenie stashy podczas pracy<\/strong><\/h1>\n\n\n\n<p>Zapisz zmiany bez commitowania:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git stash push -m \"opis zmian\"\n<\/code><\/pre>\n\n\n\n<p>Lista stashy:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git stash list\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">2\ufe0f\u20e3 <strong>Branch <\/strong><code>temp-stash<\/code><strong> jako magazyn commit\u00f3w<\/strong><\/h1>\n\n\n\n<p>Utw\u00f3rz go raz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout -b temp-stash\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">3\ufe0f\u20e3 <strong>Zamiana stash \u2192 commit na <\/strong><code>temp-stash<\/code><\/h1>\n\n\n\n<p>Dla ka\u017cdego stashu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout temp-stash\ngit stash apply stash@{N}\ngit add .\ngit commit -m \"stash: opis\"\n<\/code><\/pre>\n\n\n\n<p>Po tym stash@{N} mo\u017cesz usun\u0105\u0107:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git stash drop stash@{N}\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">4\ufe0f\u20e3 <strong>Przeniesienie stashy na GitHuba<\/strong><\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>git push origin temp-stash\n<\/code><\/pre>\n\n\n\n<p>Teraz stashy mo\u017cesz u\u017cywa\u0107 na dowolnym komputerze.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">5\ufe0f\u20e3 <strong>Cherry-pick wybranych zmian na docelowe branche<\/strong><\/h1>\n\n\n\n<p>Aby sprawdzi\u0107 jakie s\u0105 &lt;hash><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout temp-stash \ngit log --oneline<\/code><\/pre>\n\n\n\n<p>lub wersja graficzna, daje wizualne drzewko commit\u00f3w \u2014 idealne, gdy masz kilka stashy zamienionych w commity<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git log --oneline --graph --decorate\n<\/code><\/pre>\n\n\n\n<p>Przyk\u0142ad do\u0142\u0105czenia wybranego commita do auth<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout auth\ngit cherry-pick &lt;hash_commita&gt;\n<\/code><\/pre>\n\n\n\n<p>Inny stash na inn\u0105 ga\u0142\u0105\u017a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout authorization\ngit cherry-pick &lt;hash_innego_commita&gt;\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">6\ufe0f\u20e3 <strong>Czyszczenie po zako\u0144czeniu<\/strong><\/h1>\n\n\n\n<p>Je\u015bli branch spe\u0142ni\u0142 swoj\u0105 rol\u0119:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git branch -D temp-stash\ngit push origin --delete temp-stash\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u26a1 <strong>Alias Pack \u2014 2\u00d7 szybsza praca<\/strong><\/h1>\n\n\n\n<p>Dodaj do <code>~\/.gitconfig<\/code>:<\/p>\n\n\n\n<p>ini<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;alias]\n  sl = stash list\n  sa = \"!f() { git stash apply stash@{$1}; }; f\"\n  sd = \"!f() { git stash drop stash@{$1}; }; f\"\n  ss = \"!git stash push -m\"\n  ts = \"!git checkout temp-stash\"\n  sc = \"!f() { git add . &amp;&amp; git commit -m \\\"stash: $1\\\"; }; f\"\n  cp = \"!f() { git cherry-pick $1; }; f\"\n \/\/ <span style=\"background-color: initial; color: inherit; font-size: 0.9375rem; text-align: initial;\">gl = log --oneline --graph --decorate<\/span> \/\/wersja podstawowa\n  gl = log --oneline --graph --decorate --pretty=format:'%C(yellow)%h%Creset %Cgreen(%cr)%Creset %C(bold blue)%an%Creset %Creset %s' \/\/wersja rozsze\u017cona\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Co dostajesz:<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Alias<\/th><th>Dzia\u0142anie<\/th><\/tr><\/thead><tbody><tr><td><code>git sl<\/code><\/td><td>lista stashy<\/td><\/tr><tr><td><code>git ss \"opis\"<\/code><\/td><td>stash z opisem<\/td><\/tr><tr><td><code>git sa 0<\/code><\/td><td>apply stash@{0}<\/td><\/tr><tr><td><code>git sd 0<\/code><\/td><td>drop stash@{0}<\/td><\/tr><tr><td><code>git ts<\/code><\/td><td>szybki skok na temp-stash<\/td><\/tr><tr><td><code>git sc \"opis\"<\/code><\/td><td>commit zmian jako stash-commit<\/td><\/tr><tr><td><code>git cp<\/code><\/td><td>cherry-pick<\/td><\/tr><tr><td><code>git gl<\/code><\/td><td>czytelny graficzny log<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83e\udded <strong>Minimalny workflow w praktyce<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">1. Pracujesz \u2192 stash:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>git ss \"USER model update\"\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Przenosisz stash na temp-stash:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>git ts\ngit sa 0\ngit sc \"USER model update\"\ngit sd 0\ngit push\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Na innym komputerze:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>git fetch\ngit ts\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. Przenosisz wybrane zmiany:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout auth\ngit cp &lt;hash&gt;\n<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83c\udfaf Cel workflow 1\ufe0f\u20e3 Tworzenie stashy podczas pracy Zapisz zmiany bez commitowania: Lista stashy: 2\ufe0f\u20e3 Branch temp-stash jako magazyn commit\u00f3w<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,19],"tags":[37,38],"class_list":["post-309","post","type-post","status-publish","format-standard","hentry","category-bez-kategorii","category-tips","tag-git","tag-git-stash"],"_links":{"self":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts\/309","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=309"}],"version-history":[{"count":7,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts\/309\/revisions"}],"predecessor-version":[{"id":316,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=\/wp\/v2\/posts\/309\/revisions\/316"}],"wp:attachment":[{"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ctr24.co.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}