{"id":97813,"date":"2026-07-30T10:30:24","date_gmt":"2026-07-30T17:30:24","guid":{"rendered":"https:\/\/github.blog\/?p=97813"},"modified":"2026-07-30T10:30:27","modified_gmt":"2026-07-30T17:30:27","slug":"stacked-sessions-and-pull-requests-in-the-github-copilot-app","status":"publish","type":"post","link":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/","title":{"rendered":"Stacked sessions and pull requests in the GitHub Copilot app"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p class=\"wp-block-paragraph\">I want you to look at this screenshot for a moment from the <a href=\"https:\/\/github.com\/features\/ai\/github-app?utm_source=blog-copilot-app-feature-page-top&amp;utm_medium=blog&amp;utm_campaign=stacked-prs-gtm-public-preview-2026\" type=\"link\" id=\"https:\/\/github.com\/features\/ai\/github-app?utm_source=blog-copilot-app-feature-page-top&amp;utm_medium=blog&amp;utm_campaign=stacked-prs-gtm-public-preview-2026\">GitHub Copilot app<\/a>. It&rsquo;s a small one, it&rsquo;s got a lot of icons, and it tells the most glorious story that I&rsquo;m really excited about.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"488\" height=\"297\" loading=\"lazy\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818417-096042e4-9ace-4575-877d-a18926371bc2.png?resize=488%2C297\" alt=\"Screenshot of stacked sessions. They start with a folder 'Cass-kit', with 'Frontend modernization' below, and 'modernize frontend styles', 'Style port onto dev', and 'Remove react-bootstrap' all below.\" class=\"wp-image-97815\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818417-096042e4-9ace-4575-877d-a18926371bc2.png?w=488 488w, https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818417-096042e4-9ace-4575-877d-a18926371bc2.png?w=300 300w\" sizes=\"auto, (max-width: 488px) 100vw, 488px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This image is a set of stacked sessions. They&rsquo;re a series of tasks in the same repository, where each session builds off each other!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">More on those below, but first, why is this screenshot so magical? We need to go back more than a decade to start. I have this very old repo of mine for a personal app. I first made it <em>ages<\/em> ago (end of 2014-ish), and it&rsquo;s done what I want it to do (it&rsquo;s like a personal &ldquo;life&rdquo; dashboard of calendars and smart devices in my home and task management) for all those years. I occasionally do some updates, but those have gotten harder and harder to wrangle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My dependencies had gotten <em>old<\/em>. Embarrassingly old. I was using React 15 (which was released in 2016), Less for CSS pre-processing, and a version of react-bootstrap from around that time. Yes, you read that right. <em>Bootstrap<\/em>. This was old.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Trying to untangle this absolute mess before AI would have taken me weeks. I had tried and given up before. It&rsquo;s not the largest app in the world, but it&rsquo;s <em>juuuust<\/em> big enough that it would be painful, and the juice was simply not worth the squeeze.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&hellip;but we <em>do<\/em> have AI now, and so I fired up the GitHub Copilot app, added the repo, and got started.<\/p>\n\n\n\n<h2 id=\"h-first-step-could-i-one-shot-this\" class=\"wp-block-heading\">First step: Could I one-shot this?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I tried though! This is the prompt that I used in Plan mode:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>I want to modernize the frontend for this project. I first wrote a lot of this code more than 10 years ago and it should be cleaned up a lot. I'm thinking we start either using Tailwind or just vanilla CSS (please vet everything to help me decide), we remove all Less (etc), and clean everything up accessibility-wise and responsiveness-wise. Right now I really want to just focus on styles, and then slowly but surely organize and consolidate the React functionality. It might be worth modernizing dependencies, too. Let's come up with a plan around this before diving in. \n \n1. Nothing is sacred, it's okay if we have to completely start over some parts \n2. Links should change colors and add underlines on hover\/focus \n3. Input boxes should have a smaller border radius in general, and their labels should be cleaner \n4. There should be good wrapping and a max-width on containers so that an input box doesn't span an entire wide monitor.<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"I want to modernize the frontend for this project. I first wrote a lot of this code more than 10 years ago and it should be cleaned up a lot. I'm thinking we start either using Tailwind or just vanilla CSS (please vet everything to help me decide), we remove all Less (etc), and clean everything up accessibility-wise and responsiveness-wise. Right now I really want to just focus on styles, and then slowly but surely organize and consolidate the React functionality. It might be worth modernizing dependencies, too. Let's come up with a plan around this before diving in. \n \n1. Nothing is sacred, it's okay if we have to completely start over some parts \n2. Links should change colors and add underlines on hover\/focus \n3. Input boxes should have a smaller border radius in general, and their labels should be cleaner \n4. There should be good wrapping and a max-width on containers so that an input box doesn't span an entire wide monitor.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">I passed this into Claude Opus 4.8 got a Rubber Duck review from GPT-5.5, and had to do quite a bit of back-and-forth to make decisions. Once I got to a place I was happy with, I hit &ldquo;go&rdquo; and let the app go to town on my project to see if it would work!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&hellip;it didn&rsquo;t, and it was my fault.<\/p>\n\n\n\n<h2 id=\"h-second-step-realizing-i-had-tried-this-before\" class=\"wp-block-heading\">Second step: Realizing I had tried this before<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">So, remember when I said I&rsquo;d &ldquo;tried and given up before?&rdquo; Turns out, I actually had an old <code>dev<\/code>branch where I actually had modernized some parts, and didn&rsquo;t realize the compatibility issues I&rsquo;d run into.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But, that was a good thing!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When I ran the new version from this session, I realized that I was branching off <code>main<\/code>, but that my current deployment that I was using regularly was using my partially updated version on <code>dev<\/code>. So, some wanted features that I had made for myself needed to be included in this set of changes. But, the changes were <em>just<\/em> big enough that I actually had to apply those changes to the <code>dev<\/code>branch to save my sanity a bit, rather than pull in the <code>dev<\/code>changes to <code>main<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pre-AI&hellip; my word, this would have made me pull my hair out in frustration. I was admittedly frustrated here, too. I had spent time and tokens trying to get this running with what I thought was a decent plan. But! I was able to switch gears (and sessions) with a simple ask, which was way cooler than I expected it to be:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" height=\"728\" width=\"1024\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818295-33cd0929-c17e-4c38-b63a-24e091f45b2e.png?resize=1024%2C728\" alt=\"Screenshot of a conversation with Copilot. It starts with Copilot asking, 'Your decision when you're back (left to you &mdash; too consequential to guess): 1. Merge into main as-is, reconcile the master\/dev fork separately; 2. re-apply just the styling + a11y improvements as a fresh branch off dev; 3. close this PR if dev's direction supersedes it. If you want option 2, I can start that port onto dev's Less + TypeScript structure.' Cassidy responds, 'Let's close this and start a new session as a fresh branch off of dev, yes.' Copilot responds, ' I'll close PR #573 and create a fresh session branched off dev to port the styling + a11y work.'\" class=\"wp-image-97816\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818295-33cd0929-c17e-4c38-b63a-24e091f45b2e.png?w=1034 1034w, https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818295-33cd0929-c17e-4c38-b63a-24e091f45b2e.png?w=300 300w, https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818295-33cd0929-c17e-4c38-b63a-24e091f45b2e.png?w=768 768w, https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818295-33cd0929-c17e-4c38-b63a-24e091f45b2e.png?w=1024 1024w, https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818295-33cd0929-c17e-4c38-b63a-24e091f45b2e.png?w=515 515w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">All was not wasted! Copilot made a new session for me, closed the pull request I had attempted, and ported my styling decisions to changes it was applying to the dev branch.<\/p>\n\n\n\n<h2 id=\"h-third-step-findings-after-testing\" class=\"wp-block-heading\">Third step: Findings after testing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Whew, okay, so I had a good branch going, and a pull request I was decently happy with. As I started testing, though, I couldn&rsquo;t help but notice some old warnings in my console.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My heart filled with dread as I saw old references to <code>findDOMNode<\/code>and <code>componentWillReceiveProps<\/code>, functions I personally hadn&rsquo;t touched in years and years. Ugh.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Those references were not in my codebase as much anymore, but they were in react-bootstrap. I opened up Plan mode again, because I needed to figure out if an upgrade would work, or if I should remove the library entirely:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Do you think we should remove react-bootstrap entirely (and replace with a modern alternative), or just upgrade\/migrate existing components?<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Do you think we should remove react-bootstrap entirely (and replace with a modern alternative), or just upgrade\/migrate existing components?\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">Running this gave me a decent plan, talked through the options, and recommended replacing the library entirely.<\/p>\n\n\n\n<h2 id=\"h-fourth-step-stacking-a-session-on-top-of-the-other\" class=\"wp-block-heading\">Fourth step: Stacking a session on top of the other<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I needed to make sure my changes were safe from the existing work, but the react-bootstrap replacement felt like a <em>lot<\/em> of scope creep for what I was currently doing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I&rsquo;ve found that in a lot of my &ldquo;agentic&rdquo; engineering work, it&rsquo;s particularly hard to avoid that kind of scope creep. Because I don&rsquo;t have to write all the code myself, it&rsquo;s so tempting to make 10,000 line pull requests that take care of all of the things I want to do! Which is really just a new form of procrastination, ha.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, instead of making this mega pull request for myself to test, I broke it up with a new session, and prompted:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Let's make a pull request for the existing work, and then start a new session for this react-bootstrap replacement work that will branch off this existing work here, and be a separate pull request to merge into dev after this one. <\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Let's make a pull request for the existing work, and then start a new session for this react-bootstrap replacement work that will branch off this existing work here, and be a separate pull request to merge into dev after this one.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">This is the part that felt magical enough to make me want to write this blog post. The GitHub Copilot app:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Made a pull request for all of my current changes off <code>dev<\/code><\/li>\n\n\n\n<li>Made a &ldquo;stacked session&rdquo; for react-bootstrap removal (it took the previous context, made a session to run after the existing session, created a plan, had me approve the plan, and ran)<\/li>\n\n\n\n<li>Made a <a href=\"https:\/\/gh.io\/stacks?utm_source=blog-stacked-pr-docs&amp;utm_medium=blog&amp;utm_campaign=stacked-prs-gtm-public-preview-2026\" type=\"link\" id=\"https:\/\/gh.io\/stacks\">stacked pull request<\/a> following my existing work<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">THIS WAS SO COOL. Stacked sessions <em>and<\/em> stacked pull requests? Is this the future?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">YES.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In case you don&rsquo;t get what that means by name: A stack is a series of pull requests in the same repository where each pull request targets the branch of the pull request below it, forming an ordered chain that ultimately lands on your main branch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In my case, not only did the sessions follow each other, but their changes did too!<\/p>\n\n\n\n<h2 id=\"h-fifth-step-sailing-off-into-the-sunset-with-stacked-pull-requests\" class=\"wp-block-heading\">Fifth step: Sailing off into the sunset with stacked pull requests<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I know I&rsquo;m being somewhat cheeky with my excitement, but my happiness is sincere. The ease of shipping these changes was a delightful experience after neglecting my old codebase for ages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&rsquo;s look at that first screenshot again: I&rsquo;ll walk you through it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"488\" height=\"297\" loading=\"lazy\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818417-096042e4-9ace-4575-877d-a18926371bc2_e0e8ce.png?resize=488%2C297\" alt=\"Screenshot of stacked sessions. They start with a folder 'Cass-kit', with 'Frontend modernization' below, and 'modernize frontend styles', 'Style port onto dev', and 'Remove react-bootstrap' all below.\" class=\"wp-image-97817\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818417-096042e4-9ace-4575-877d-a18926371bc2_e0e8ce.png?w=488 488w, https:\/\/github.blog\/wp-content\/uploads\/2026\/07\/608818417-096042e4-9ace-4575-877d-a18926371bc2_e0e8ce.png?w=300 300w\" sizes=\"auto, (max-width: 488px) 100vw, 488px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>At the top, you can see the repo I pulled in.<\/li>\n\n\n\n<li>Next &ldquo;Frontend modernization&rdquo; is the initial session name.<\/li>\n\n\n\n<li>That next layer nested in is the first attempt at a pull request, that we ultimately didn&rsquo;t ship (hence the red icon).<\/li>\n\n\n\n<li>The next layer nested at the same level is where we got a working pull request for the <code>dev<\/code>branch.<\/li>\n\n\n\n<li>The nested session below that is the draft pull request in progress, with the react-bootstrap changes.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Software development has never been smooth. But this project was made a <em>whole lot easier<\/em> with these modern tools.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&rsquo;re looking to modernize your own codebases, give this a try!<\/p>\n\n\n\n<div class=\"wp-block-group post-content-cta has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\"><strong>Check out pull request stacks<\/strong> anywhere you commit code on GitHub, and stacked sessions in the <a href=\"https:\/\/github.com\/features\/ai\/github-app?utm_source=blog-copilot-app-feature-page-bottom&amp;utm_medium=blog&amp;utm_campaign=stacked-prs-gtm-public-preview-2026\">GitHub Copilot app &gt;<\/a><\/p>\n<\/div>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Learn how I modernized an old codebase of mine using stacked sessions and pull requests in the GitHub Copilot app.<\/p>\n","protected":false},"author":2277,"featured_media":93174,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_gh_post_show_toc":"yes","_gh_post_is_no_robots":"","_gh_post_is_featured":"yes","_gh_post_is_excluded":"","_gh_post_is_unlisted":"","_gh_post_related_link_1":"","_gh_post_related_link_2":"","_gh_post_related_link_3":"","_gh_post_sq_img":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-logo-stripe-1-e1767925988355.png","_gh_post_sq_img_id":"93188","_gh_post_cta_title":"","_gh_post_cta_text":"","_gh_post_cta_link":"","_gh_post_cta_button":"","_gh_post_recirc_hide":"","_gh_post_recirc_col_1":"","_gh_post_recirc_col_2":"","_gh_post_recirc_col_3":"","_gh_post_recirc_col_4":"","_featured_video":"","_gh_post_additional_query_params":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[3293,3316,3298,3302,3295],"tags":[2535,3867,2840,3901,3902],"coauthors":[3489],"class_list":["post-97813","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-and-ml","category-collaboration","category-developer-skills","category-github","category-github-copilot","tag-github-copilot","tag-github-copilot-app","tag-pull-requests","tag-stacked-pull-requests","tag-stacked-sessions"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.1 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Stacked sessions and pull requests in the GitHub Copilot app - The GitHub Blog<\/title>\n<meta name=\"description\" content=\"Learn how I modernized an old codebase of mine using stacked sessions and pull requests in the GitHub Copilot app.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stacked sessions and pull requests in the GitHub Copilot app\" \/>\n<meta property=\"og:description\" content=\"Learn how I modernized an old codebase of mine using stacked sessions and pull requests in the GitHub Copilot app.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/\" \/>\n<meta property=\"og:site_name\" content=\"The GitHub Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T17:30:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-30T17:30:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-logo-stripe.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cassidy Williams\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@cassidoo\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cassidy Williams\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/\"},\"author\":{\"name\":\"Cassidy Williams\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/8cbae3ca030ca9cc37ec454ed2d3899c\"},\"headline\":\"Stacked sessions and pull requests in the GitHub Copilot app\",\"datePublished\":\"2026-07-30T17:30:24+00:00\",\"dateModified\":\"2026-07-30T17:30:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/\"},\"wordCount\":1166,\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-github-copilot-logo-stripe.png?fit=1920%2C1080\",\"keywords\":[\"GitHub Copilot\",\"GitHub Copilot app\",\"pull requests\",\"stacked pull requests\",\"stacked sessions\"],\"articleSection\":[\"AI &amp; ML\",\"Collaboration\",\"Developer skills\",\"GitHub\",\"GitHub Copilot\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/\",\"url\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/\",\"name\":\"Stacked sessions and pull requests in the GitHub Copilot app - The GitHub Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-github-copilot-logo-stripe.png?fit=1920%2C1080\",\"datePublished\":\"2026-07-30T17:30:24+00:00\",\"dateModified\":\"2026-07-30T17:30:27+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/8cbae3ca030ca9cc37ec454ed2d3899c\"},\"description\":\"Learn how I modernized an old codebase of mine using stacked sessions and pull requests in the GitHub Copilot app.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/#primaryimage\",\"url\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-github-copilot-logo-stripe.png?fit=1920%2C1080\",\"contentUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-github-copilot-logo-stripe.png?fit=1920%2C1080\",\"width\":1920,\"height\":1080,\"caption\":\"Copilot appears against a decorative background with scattered green squares.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/github.blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI &amp; ML\",\"item\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"GitHub Copilot\",\"item\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Stacked sessions and pull requests in the GitHub Copilot app\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/github.blog\\\/#website\",\"url\":\"https:\\\/\\\/github.blog\\\/\",\"name\":\"The GitHub Blog\",\"description\":\"Updates, ideas, and inspiration from GitHub to help developers build and design software.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/github.blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/8cbae3ca030ca9cc37ec454ed2d3899c\",\"name\":\"Cassidy Williams\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/237362eba6128d96de86c2146f325ba144bf2ee5179db26a8cebe817989eddd4?s=96&d=mm&r=g816df366299296021438072ea953bb49\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/237362eba6128d96de86c2146f325ba144bf2ee5179db26a8cebe817989eddd4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/237362eba6128d96de86c2146f325ba144bf2ee5179db26a8cebe817989eddd4?s=96&d=mm&r=g\",\"caption\":\"Cassidy Williams\"},\"description\":\"Cassidy is senior director for developer advocacy here at GitHub. She enjoys building software, advising startups, and teaching developers how to build better. She has a weekly newsletter at cassidoo.co\\\/newsletter where you can get her updates, practice coding problems, and a joke in your inbox!\",\"sameAs\":[\"http:\\\/\\\/cassidoo.co\",\"linkedin.com\\\/in\\\/cassidoo\",\"https:\\\/\\\/x.com\\\/cassidoo\"],\"jobTitle\":\"Sr. Director, Developer Advocacy, GitHub\",\"url\":\"https:\\\/\\\/github.blog\\\/author\\\/cassidoo\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Stacked sessions and pull requests in the GitHub Copilot app - The GitHub Blog","description":"Learn how I modernized an old codebase of mine using stacked sessions and pull requests in the GitHub Copilot app.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/","og_locale":"en_US","og_type":"article","og_title":"Stacked sessions and pull requests in the GitHub Copilot app","og_description":"Learn how I modernized an old codebase of mine using stacked sessions and pull requests in the GitHub Copilot app.","og_url":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/","og_site_name":"The GitHub Blog","article_published_time":"2026-07-30T17:30:24+00:00","article_modified_time":"2026-07-30T17:30:27+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-logo-stripe.png","type":"image\/png"}],"author":"Cassidy Williams","twitter_card":"summary_large_image","twitter_creator":"@cassidoo","twitter_misc":{"Written by":"Cassidy Williams","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/#article","isPartOf":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/"},"author":{"name":"Cassidy Williams","@id":"https:\/\/github.blog\/#\/schema\/person\/8cbae3ca030ca9cc37ec454ed2d3899c"},"headline":"Stacked sessions and pull requests in the GitHub Copilot app","datePublished":"2026-07-30T17:30:24+00:00","dateModified":"2026-07-30T17:30:27+00:00","mainEntityOfPage":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/"},"wordCount":1166,"image":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-logo-stripe.png?fit=1920%2C1080","keywords":["GitHub Copilot","GitHub Copilot app","pull requests","stacked pull requests","stacked sessions"],"articleSection":["AI &amp; ML","Collaboration","Developer skills","GitHub","GitHub Copilot"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/","url":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/","name":"Stacked sessions and pull requests in the GitHub Copilot app - The GitHub Blog","isPartOf":{"@id":"https:\/\/github.blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/#primaryimage"},"image":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-logo-stripe.png?fit=1920%2C1080","datePublished":"2026-07-30T17:30:24+00:00","dateModified":"2026-07-30T17:30:27+00:00","author":{"@id":"https:\/\/github.blog\/#\/schema\/person\/8cbae3ca030ca9cc37ec454ed2d3899c"},"description":"Learn how I modernized an old codebase of mine using stacked sessions and pull requests in the GitHub Copilot app.","breadcrumb":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/#primaryimage","url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-logo-stripe.png?fit=1920%2C1080","contentUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-logo-stripe.png?fit=1920%2C1080","width":1920,"height":1080,"caption":"Copilot appears against a decorative background with scattered green squares."},{"@type":"BreadcrumbList","@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/stacked-sessions-and-pull-requests-in-the-github-copilot-app\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/github.blog\/"},{"@type":"ListItem","position":2,"name":"AI &amp; ML","item":"https:\/\/github.blog\/ai-and-ml\/"},{"@type":"ListItem","position":3,"name":"GitHub Copilot","item":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/"},{"@type":"ListItem","position":4,"name":"Stacked sessions and pull requests in the GitHub Copilot app"}]},{"@type":"WebSite","@id":"https:\/\/github.blog\/#website","url":"https:\/\/github.blog\/","name":"The GitHub Blog","description":"Updates, ideas, and inspiration from GitHub to help developers build and design software.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/github.blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/github.blog\/#\/schema\/person\/8cbae3ca030ca9cc37ec454ed2d3899c","name":"Cassidy Williams","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/237362eba6128d96de86c2146f325ba144bf2ee5179db26a8cebe817989eddd4?s=96&d=mm&r=g816df366299296021438072ea953bb49","url":"https:\/\/secure.gravatar.com\/avatar\/237362eba6128d96de86c2146f325ba144bf2ee5179db26a8cebe817989eddd4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/237362eba6128d96de86c2146f325ba144bf2ee5179db26a8cebe817989eddd4?s=96&d=mm&r=g","caption":"Cassidy Williams"},"description":"Cassidy is senior director for developer advocacy here at GitHub. She enjoys building software, advising startups, and teaching developers how to build better. She has a weekly newsletter at cassidoo.co\/newsletter where you can get her updates, practice coding problems, and a joke in your inbox!","sameAs":["http:\/\/cassidoo.co","linkedin.com\/in\/cassidoo","https:\/\/x.com\/cassidoo"],"jobTitle":"Sr. Director, Developer Advocacy, GitHub","url":"https:\/\/github.blog\/author\/cassidoo\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-logo-stripe.png?fit=1920%2C1080","jetpack_shortlink":"https:\/\/wp.me\/pamS32-prD","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/97813","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/users\/2277"}],"replies":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/comments?post=97813"}],"version-history":[{"count":3,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/97813\/revisions"}],"predecessor-version":[{"id":97833,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/97813\/revisions\/97833"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media\/93174"}],"wp:attachment":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media?parent=97813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/categories?post=97813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/tags?post=97813"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/coauthors?post=97813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}