{"id":343786,"date":"2021-09-24T17:41:28","date_gmt":"2021-09-24T14:41:28","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-delete-git-branches-on-local-and-remote-repositories-cloudsavvy-it\/"},"modified":"2021-09-24T17:41:28","modified_gmt":"2021-09-24T14:41:28","slug":"how-to-delete-git-branches-on-local-and-remote-repositories-cloudsavvy-it","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-delete-git-branches-on-local-and-remote-repositories-cloudsavvy-it\/","title":{"rendered":"#How to Delete Git Branches On Local and Remote Repositories \u2013 CloudSavvy IT"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a285fb6603b7\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a285fb6603b7\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-delete-git-branches-on-local-and-remote-repositories-cloudsavvy-it\/#Why_Delete_Branches\" >Why Delete Branches?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-delete-git-branches-on-local-and-remote-repositories-cloudsavvy-it\/#Delete_Local_Branch\" >Delete Local Branch<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-delete-git-branches-on-local-and-remote-repositories-cloudsavvy-it\/#Delete_Remote_Branch\" >Delete Remote Branch<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-delete-git-branches-on-local-and-remote-repositories-cloudsavvy-it\/#Automatically_Deleting_Github_Pull_Request_Branches\" >Automatically Deleting Github Pull Request Branches<\/a><\/li><\/ul><\/nav><\/div>\n<p><strong>&#8220;#How to Delete Git Branches On Local and Remote Repositories \u2013 CloudSavvy IT&#8221;<\/strong><\/p>\n<div id=\"article-content-area\">\n<img loading=\"lazy\" decoding=\"async\" class=\"type:primaryImage alignnone size-full wp-image-14290\" srcset=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/4d72a7db.png?width=398&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1 400w, https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/4d72a7db.png?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1 1200w\" sizes=\"auto, 400w, 1200w\" src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/4d72a7db.png?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"1200\" height=\"675\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>Branches are a core part of Git workflows, being used to keep unfinished code out of the master codebase. However, if you work with them a lot, you may have a bunch of unused branch references in your branch listing that need to be deleted.<\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Why_Delete_Branches\"><\/span>Why Delete Branches?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>It\u2019s important to understand how branches work before you go about deleting them. First off, you\u2019re not really deleting any code\u2014you\u2019re deleting the <em>branch reference<\/em>, which can still lead to data loss in some cases, but for most workflows is entirely harmless.<\/p>\n<p>You can think of Git commits like a chain pointing backward, constructing your Git history all the way back to the beginning of the repo (it\u2019s technically stored as complicated blobs and trees internally, but this analogy works in most cases).<\/p>\n<p>Feature branches are forks in this chain, creating two diverging histories. When you create a commit on a new branch, a branch reference is created, and set to point towards that commit. Merge commits bring them back together, and also move the <code>feature<\/code>\u00a0label to be in line with <code>master<\/code>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14293\" src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/465f9339.jpg?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"1068\" height=\"490\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>At this point, <code>feature<\/code>\u00a0and <code>master<\/code>\u00a0are both doing the same thing. You can delete the <code>feature<\/code>\u00a0reference, and no code is lost. If you don\u2019t intend to reuse this branch, it\u2019s best practice to just delete it.<\/p>\n<p>However, this can lead to data loss if the branch reference points to commits which have not been merged into the <code>master<\/code>\u00a0timeline (or another branch). Git will recognize that these commits are no longer needed, since there isn\u2019t an active branch reference that includes them, and clean them up when it does garbage collection.<\/p>\n<p>You can also opt to not delete branches. However, the branch reference will not move with <code>master<\/code>, which will continue chugging ahead. If you make a new commit in the feature branch, it will create a \u201cnew branch\u201d in the history, which can be merged, but may be severely out of date.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14294\" src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/846fcba5.jpg?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"1092\" height=\"459\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>For this reason, unless you\u2019re constantly merging two branches, it\u2019s best to delete feature branches after they\u2019re merged to clear up your history.<\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Delete_Local_Branch\"><\/span>Delete Local Branch<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Git won\u2019t let you delete the branch that the HEAD is on, so you will need to switch your working branch back to <code>master<\/code>. Unless, of course, you want to delete <code>master<\/code> for some reason.<\/p>\n<pre>git checkout master<\/pre>\n<p>Then, you can use <code>git branch<\/code>\u00a0with the <code>-d<\/code>\u00a0flag to delete a branch:<\/p>\n<pre>git branch -d branch_name<\/pre>\n<p>Because of the way Git handles branches, this command can fail under certain circumstances. Git actually keeps\u00a0<em>three branches<\/em> for each \u201cbranch\u201d: the local branch, the remote branch, and a remote-tracking branch usually named <code>origin\/branchname<\/code>.<\/p>\n<p>The <code>-d<\/code>\u00a0flag will only delete branches that have been pushed and merged into the remote tracking branch. This is usually what you\u2019d want for normal operations, but if you want to forcibly delete it, you can run the same command again with a capital <code>-D<\/code>\u00a0flag:<\/p>\n<pre>git branch -D branch_name<\/pre>\n<p>Keep in mind that this <strong>will lead to data loss<\/strong> if the commits are unmerged.<\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Delete_Remote_Branch\"><\/span>Delete Remote Branch<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Deleting branches on the remote is easy as well.\u00a0To delete remote branches, run <code>git push<\/code>\u00a0with the <code>-d<\/code>\u00a0flag, which will cause the branch to be removed if you have access to do so.<\/p>\n<pre>git push origin -d branch_name<\/pre>\n<p>Depending on your Git provider, like Github or Bitbucket, you may have to enable branch deletion in the online settings, and there may be tools there to handle the deletion instead.<\/p>\n<p>This won\u2019t send the changes to client machines however, until they run <code>git fetch<\/code>\u00a0with the <code>--prune<\/code>\u00a0flag, which will clean up old branches:<\/p>\n<pre>git fetch --all --prune<\/pre>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Automatically_Deleting_Github_Pull_Request_Branches\"><\/span>Automatically Deleting Github Pull Request Branches<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Github actually has a nice feature for repositories to automatically clean up branches created from pull requests. You can turn it on in the settings, under Options &gt; Merge Button:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14292\" src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/2a36ffc3.jpg?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"1190\" height=\"622\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/>\n<\/div>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.cloudsavvyit.com\/14289\/how-to-delete-git-branches-on-local-and-remote-repositories\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;#How to Delete Git Branches On Local and Remote Repositories \u2013 CloudSavvy IT&#8221; Branches are a core part of Git workflows, being used to keep unfinished code out of the master codebase. However, if you work with them a lot, you may have a bunch of unused branch references in your branch listing that need&#8230;<\/p>\n","protected":false},"author":1,"featured_media":343787,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/09\/4d72a7db.png","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-343786","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/343786","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=343786"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/343786\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/343787"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=343786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=343786"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=343786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}