Re: Git branches and pull requests
"Kim Gräsman [email protected] [win_tech_off_topic]" <[email protected]> Wed, 24 Aug 2016 14:11:00 +0200
| Newsgroups | gmane.comp.windows.off-topic |
|---|---|
| Message-ID | <CANt7B+dQNMEGk1kvQWtPkN_nJ1MoJqOM9GfaMXsJuDvXkK4pTA@mail.gmail.com> |
--089e0122825eb0b097053ad02c80 Content-Type: text/plain; charset=UTF-8 On Wed, Aug 24, 2016 at 1:49 PM, Christopher Tavares cct-/[email protected] [win_tech_off_topic] <[email protected]> wrote: > > > In GitHub and in VSO, pull requests track the branch you originated them > from. So if you push more commits after opening the PR they will be > included when you eventually merge. On GitHub I've opened PRs and then > rebased the branch and did a force push. The PR tracked the head of the > branch, and this followed the rebase. > I do this routinely, too. John, it sounds like your primary concern is that your branches grow too many unrelated changes before PRs are merged? I think you can use Git's history rewriting to great effect here. I usually make lots of crazy edits, and commit frequently. Then, when I'm getting ready to build a PR, I use `git rebase -i master` (or whatever parent branch) to interactively make it look like I knew what I was doing all along. Once the branch history looks nice, I can either create a PR from it directly, or create a separate PR branch from HEAD if I want to continue working on the same branch for some reason. Speaking of which, I usually avoid the normal PR flow, which generates a merge commit (I haven't really understood why that's a good idea), and instead keep PRs perfectly rebased on top of master and then do `git merge --ff-only pr-branch`. This creates a nice linear history on master. Again, not sure if I'm missing out on something there, but we usually don't care which feature branch something came from, as we use branches mostly as a scratch space for a single commit. - Kim --089e0122825eb0b097053ad02c80 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> </head> <body style="background-color: #fff;"> <span style="display:none"> </span> <!--~-|**|PrettyHtmlStartT|**|-~--> <div id="ygrp-mlmsg" style="position:relative;"> <div id="ygrp-msg" style="z-index: 1;"> <!--~-|**|PrettyHtmlEndT|**|-~--> <div id="ygrp-text" > <p><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 24, 2016 at 1:49 PM, Christopher Tavares <a href="mailto:cct-/[email protected]">cct-/[email protected]</a> [win_tech_off_topic] <span dir="ltr"><<a href="mailto:[email protected]" target="_blank">[email protected]</a>></span> wrote:<blockquote class="gmail_quote" style="border-left:1px #ccc solid;"><div><br> <p dir="ltr">In GitHub and in VSO, pull requests track the branch you originated them from. So if you push more commits after opening the PR they will be included when you eventually merge. On GitHub I've opened PRs and then rebased the branch and did a force push. The PR tracked the head of the branch, and this followed the rebase.</p></div></blockquote><div><br></div><div>I do this routinely, too.</div><div><br></div><div>John, it sounds like your primary concern is that your branches grow too many unrelated changes before PRs are merged?</div><div><br></div><div>I think you can use Git's history rewriting to great effect here. I usually make lots of crazy edits, and commit frequently. Then, when I'm getting ready to build a PR, I use `git rebase -i master` (or whatever parent branch) to interactively make it look like I knew what I was doing all along.</div><div><br></div><div>Once the branch history looks nice, I can either create a PR from it directly, or create a separate PR branch from HEAD if I want to continue working on the s ame branch for some reason.</div><div><br></div><div>Speaking of which, I usually avoid the normal PR flow, which generates a merge commit (I haven't really understood why that's a good idea), and instead keep PRs perfectly rebased on top of master and then do `git merge --ff-only pr-branch`. This creates a nice linear history on master. Again, not sure if I'm missing out on something there, but we usually don't care which feature branch something came from, as we use branches mostly as a scratch space for a single commit.</div><div><br></div><div>- Kim</div></div></div></div> </p> </div> <!--~-|**|PrettyHtmlStart|**|-~--> <div style="color: #fff; height: 0;">__._,_.___</div> <div style="clear:both"> </div> <div id="fromDMARC" style="margin-top: 10px;"> <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;"> Posted by: =?UTF-8?B?S2ltIEdyw6RzbWFu?= <[email protected]> <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;"> </div> <div style="clear:both"> </div> <table cellspacing=4px style="margin-top: 10px; margin-bottom: 10px; color: #2D50FD;"> <tbody> <tr> <td style="font-size: 12px; font-family: arial; font-weight: bold; padding: 7px 5px 5px;" > <a style="text-decoration: none; color: #2D50FD" href="https://groups.yahoo.com/neo/groups/win_tech_off_topic/conversations/messages/60568;_ylc=X3oDMTJxNWRhYmpnBF9TAzk3MzU5NzE0BGdycElkAzM3MDE1MjQEZ3Jwc3BJZAMxNzA1MDA2NjY5BG1zZ0lkAzYwNTY4BHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTQ3MjA0MTAzMA--?act=reply&messageNum=60568">Reply via web post</a> </td> <td>•</td> <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;" > <a href="mailto:[email protected]?subject=Re%3A%20%5BOT%5D%20Git%20branches%20and%20pull%20requests" style="text-decoration: none; color: #2D50FD;"> Reply to sender </a> </td> <td>•</td> <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;"> <a href="mailto:[email protected]?subject=Re%3A%20%5BOT%5D%20Git%20branches%20and%20pull%20requests" style="text-decoration: none; color: #2D50FD"> Reply to group </a> </td> <td>•</td> <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;" > <a href="https://groups.yahoo.com/neo/groups/win_tech_off_topic/conversations/newtopic;_ylc=X3oDMTJlMDlxbW12BF9TAzk3MzU5NzE0BGdycElkAzM3MDE1MjQEZ3Jwc3BJZAMxNzA1MDA2NjY5BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTQ3MjA0MTAzMA--" style="text-decoration: none; color: #2D50FD">Start a New Topic</a> </td> <td>•</td> <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;color: #2D50FD;" > <a href="https://groups.yahoo.com/neo/groups/win_tech_off_topic/conversations/topics/60563;_ylc=X3oDMTM2Y2ljb3BvBF9TAzk3MzU5NzE0BGdycElkAzM3MDE1MjQEZ3Jwc3BJZAMxNzA1MDA2NjY5BG1zZ0lkAzYwNTY4BHNlYwNmdHIEc2xrA3Z0cGMEc3RpbWUDMTQ3MjA0MTAzMAR0cGNJZAM2MDU2Mw--" style="text-decoration: none; color: #2D50FD;">Messages in this topic</a> (5) </td> </tr> </tbody> </table> <div id="megaphoneModule"> <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;"> <div> <div class="stream" style="margin-bottom:10px;"> <div style="background-color:white;"> <div class="sn-img" style="display:inline;"><img name="tn_file" style="padding:0px 10px;vertical-align:top;margin-top:5px;" src="https://s.yimg.com/ru/static/images/yg/img/megaphone/1464031581_phpFA8bON" height="82" width="82"></div> <div class="mod-txt" style="display:inline-block;"> <a rel="nofollow" name="sub_url" target="_blank" href="https://yho.com/1wwmgg" style="color:#0000FF;display:block;margin-left:5px;text-decoration:none;"><span style="font-size:15px;">Have you tried the highest rated email app?</span></a> <div style="max-width:530px;padding:2px 5px;">With 4.5 stars in iTunes, the Yahoo Mail app is the highest rated email app on the market. What are you waiting for? Now you can access all your inboxes (Gmail, Outlook, AOL and more) in one place. Never delete an email again with 1000GB of free cloud storage.</div> </div> </div> </div> </div> <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;"> </div> <!------- Start Nav Bar ------> <!-- |**|begin egp html banner|**| --> <div id="ygrp-vital" style="background-color: #f2f2f2; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;"> <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; "><a href="https://groups.yahoo.com/neo/groups/win_tech_off_topic/info;_ylc=X3oDMTJlZmU0N2s1BF9TAzk3MzU5NzE0BGdycElkAzM3MDE1MjQEZ3Jwc3BJZAMxNzA1MDA2NjY5BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQ3MjA0MTAzMA--" style="text-decoration: none;">Visit Your Group</a></span> <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;"> </ul> </div> <div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;"> <a href="https://groups.yahoo.com/neo;_ylc=X3oDMTJkMTVkb2N0BF9TAzk3NDc2NTkwBGdycElkAzM3MDE1MjQEZ3Jwc3BJZAMxNzA1MDA2NjY5BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxNDcyMDQxMDMw" style="float: left;"><img src="http://l.yimg.com/ru/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a> <div style="color: #747575; float: right;"> • <a href="https://info.yahoo.com/privacy/us/yahoo/groups/details.html" style="text-decoration: none;">Privacy</a> • <a href="mailto:win_tech_off_topic-unsubscribe-hHKSG33TihhbjbujkaE4pw@public.gmane.org?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> • <a href="https://info.yahoo.com/legal/us/yahoo/utos/terms/" style="text-decoration: none;">Terms of Use</a> </div> </div> <br> <!-- |**|end egp html banner|**| --> </div> <!-- ygrp-msg --> <!-- Sponsor --> <!-- |**|begin egp html banner|**| --> <div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;"> <!-- Start Recommendations --> <div id="ygrp-reco"> </div> <!-- End Recommendations --> </div> <!-- |**|end egp html banner|**| --> <div style="clear:both; color: #FFF; font-size:1px;">.</div> </div> <img src="http://geo.yahoo.com/serv?s=97359714/grpId=3701524/grpspId=1705006669/msgId=60568/stime=1472041030" width="1" height="1"> <br> <img src="http://y.analytics.yahoo.com/fpc.pl?ywarid=515FB27823A7407E&a=10001310322279&js=no&resp=img&cf12=CP" width="1" height="1"> <div style="color: #fff; height: 0;">__,_._,___</div> <!--~-|**|PrettyHtmlEnd|**|-~--> </body> <!--~-|**|PrettyHtmlStart|**|-~--> <head> <style type="text/css"> <!-- #ygrp-mkp { border: 1px solid #d8d8d8; font-family: Arial; margin: 10px 0; padding: 0 10px; } #ygrp-mkp hr { border: 1px solid #d8d8d8; } #ygrp-mkp #hd { color: #628c2a; font-size: 85%; font-weight: 700; line-height: 122%; margin: 10px 0; } #ygrp-mkp #ads { margin-bottom: 10px; } #ygrp-mkp .ad { padding: 0 0; } #ygrp-mkp .ad p { margin: 0; } #ygrp-mkp .ad a { color: #0000ff; text-decoration: none; } #ygrp-sponsor #ygrp-lc { font-family: Arial; } #ygrp-sponsor #ygrp-lc #hd { margin: 10px 0px; font-weight: 700; font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad { margin-bottom: 10px; padding: 0 0; } #actions { font-family: Verdana; font-size: 11px; padding: 10px 0; } #activity { background-color: #e0ecee; float: left; font-family: Verdana; font-size: 10px; padding: 10px; } #activity span { font-weight: 700; } #activity span:first-child { text-transform: uppercase; } #activity span a { color: #5085b6; text-decoration: none; } #activity span span { color: #ff7900; } #activity span .underline { text-decoration: underline; } .attach { clear: both; display: table; font-family: Arial; font-size: 12px; padding: 10px 0; width: 400px; } .attach div a { text-decoration: none; } .attach img { border: none; padding-right: 5px; } .attach label { display: block; margin-bottom: 5px; } .attach label a { text-decoration: none; } blockquote { margin: 0 0 0 4px; } .bold { font-family: Arial; font-size: 13px; font-weight: 700; } .bold a { text-decoration: none; } dd.last p a { font-family: Verdana; font-weight: 700; } dd.last p span { margin-right: 10px; font-family: Verdana; font-weight: 700; } dd.last p span.yshortcuts { margin-right: 0; } div.attach-table div div a { text-decoration: none; } div.attach-table { width: 400px; } div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited { text-decoration: none; } div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited { text-decoration: none; } div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts { font-family: Verdana; font-size: 10px; font-weight: normal; } .green { color: #628c2a; } .MsoNormal { margin: 0 0 0 0; } o { font-size: 0; } #photos div { float: left; width: 72px; } #photos div div { border: 1px solid #666666; height: 62px; overflow: hidden; width: 62px; } #photos div label { color: #666666; font-size: 10px; overflow: hidden; text-align: center; white-space: nowrap; width: 64px; } #reco-category { font-size: 77%; } #reco-desc { font-size: 77%; } .replbq { margin: 4px; } #ygrp-actbar div a:first-child { /* border-right: 0px solid #000;*/ margin-right: 2px; padding-right: 5px; } #ygrp-mlmsg { font-size: 13px; font-family: Arial, helvetica,clean, sans-serif; *font-size: small; *font: x-small; } #ygrp-mlmsg table { font-size: inherit; font: 100%; } #ygrp-mlmsg select, input, textarea { font: 99% Arial, Helvetica, clean, sans-serif; } #ygrp-mlmsg pre, code { font:115% monospace; *font-size:100%; } #ygrp-mlmsg * { line-height: 1.22em; } #ygrp-mlmsg #logo { padding-bottom: 10px; } #ygrp-msg p a { font-family: Verdana; } #ygrp-msg p#attach-count span { color: #1E66AE; font-weight: 700; } #ygrp-reco #reco-head { color: #ff7900; font-weight: 700; } #ygrp-reco { margin-bottom: 20px; padding: 0px; } #ygrp-sponsor #ov li a { font-size: 130%; text-decoration: none; } #ygrp-sponsor #ov li { font-size: 77%; list-style-type: square; padding: 6px 0; } #ygrp-sponsor #ov ul { margin: 0; padding: 0 0 0 8px; } #ygrp-text { font-family: Georgia; } #ygrp-text p { margin: 0 0 1em 0; } #ygrp-text tt { font-size: 120%; } #ygrp-vital ul li:last-child { border-right: none !important; } --> </style> </head> <!--~-|**|PrettyHtmlEnd|**|-~--> </html> <!-- end group email --> --089e0122825eb0b097053ad02c80--