{"id":380,"date":"2020-09-03T18:00:22","date_gmt":"2020-09-03T18:00:22","guid":{"rendered":"https:\/\/www.programmingduck.com\/?p=380"},"modified":"2020-12-06T10:06:22","modified_gmt":"2020-12-06T10:06:22","slug":"version-control","status":"publish","type":"post","link":"https:\/\/programmingduck.com\/articles\/version-control","title":{"rendered":"Version control &#8211; Everything you need to know"},"content":{"rendered":"<h2>Goal<\/h2>\n<p>The goal of this page is to help you learn version control to get the maximum possible benefit out of it.<\/p>\n<h2>First steps for beginners<\/h2>\n<p>If you want to learn the basics of version control, including basic usage, there are many good resources out there already. Here are some recommendations:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.atlassian.com\/git\">Atlassian tutorials on Git<\/a> &#8211; This is an amazing resource. It&#8217;s the resource that I personally used to learn most of what I know about git today. It takes you from complete beginner to an intermediate \/ advanced git user.<\/li>\n<li><a href=\"https:\/\/git-scm.com\/book\/en\/v2\">Pro Git by Scott Chacon and Ben Straub<\/a> &#8211; Trusted colleagues of mine, who are considered git experts at my work, recommend this book. I&#8217;ve only read parts of it (it&#8217;s on my list to read fully sometime) and it seemed pretty good. It seems suitable for all levels, from beginner to advanced.<\/li>\n<\/ul>\n<p>Other than those resources, any git tutorial you can find will probably help. Even better, many beginner programming courses use basic version control as they work through small projects. Those kinds of courses are great because they teach you git in a usable way, emulating how you would use it in a job.<\/p>\n<h2>About version control<\/h2>\n<p>For the most part, version control just allows you you to try out different things with code. If it doesn&#8217;t work out, you can switch back to a different version. It&#8217;s quite sophisticated in how it works and it provides additional benefits, but that&#8217;s one of the main ones.<\/p>\n<p>For more information on the basic definition, please see the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Version_control\">Wikipedia article on version control<\/a> or the beginner resources listed above.<\/p>\n<p>Also, consider reading these posts:<\/p>\n<ul>\n<li><a href=\"\/articles\/version-control-benefits\">Benefits of version control<\/a><\/li>\n<li><a href=\"\/articles\/version-control-usage-tiers\">How much version control do you need to know and use?<\/a><\/li>\n<\/ul>\n<h2>Important guides on version control<\/h2>\n<p>For detailed guides on how to use and apply different aspects of version control, please see these articles:<\/p>\n<ul>\n<li><a href=\"\/articles\/version-control-branches\">Branches (version control) &#8211; The ultimate guide<\/a><\/li>\n<li><a href=\"\/articles\/version-control-commit-structure\">Commit structure &#8211; The ultimate guide<\/a><\/li>\n<li><a href=\"\/articles\/version-control-commit-messages\">Commit messages &#8211; The ultimate guide<\/a><\/li>\n<\/ul>\n<h2>Other tips for version control<\/h2>\n<p>Here are some more tips on using version control effectively while you work:<\/p>\n<ul>\n<li><a href=\"\/articles\/version-control-commit-early-push-once\">Commit early and often, push once<\/a><\/li>\n<li><a href=\"\/articles\/version-control-configure-default-options\">Configure default options<\/a><\/li>\n<li><a href=\"\/articles\/version-control-risky-rebasing-branch\">Use a separate branch for risky rebasing<\/a><\/li>\n<li><a href=\"\/articles\/version-control-prototype-code-branch\">Use a separate branch for prototype code<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Find out everything you need to know about version control and git.<\/p>\n","protected":false},"author":2,"featured_media":424,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-380","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-version-control"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Version control - Everything you need to know - Programming Duck<\/title>\n<meta name=\"description\" content=\"Find out everything you need to know about version control and git.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/programmingduck.com\/articles\/version-control\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Version control - Everything you need to know - Programming Duck\" \/>\n<meta property=\"og:description\" content=\"Find out everything you need to know about version control and git.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/programmingduck.com\/articles\/version-control\" \/>\n<meta property=\"og:site_name\" content=\"Programming Duck\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-03T18:00:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-06T10:06:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/programmingduck.com\/wp-content\/uploads\/2020\/09\/clement-h-95YRwf6CNw8-unsplash-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3840\" \/>\n\t<meta property=\"og:image:height\" content=\"2560\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Spyros Argalias\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/programmingduck.com\/#website\",\"url\":\"https:\/\/programmingduck.com\/\",\"name\":\"Programming Duck\",\"description\":\"Improve your programming\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/programmingduck.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/programmingduck.com\/articles\/version-control#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/programmingduck.com\/wp-content\/uploads\/2020\/09\/clement-h-95YRwf6CNw8-unsplash-scaled.jpg\",\"contentUrl\":\"https:\/\/programmingduck.com\/wp-content\/uploads\/2020\/09\/clement-h-95YRwf6CNw8-unsplash-scaled.jpg\",\"width\":3840,\"height\":2560},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/programmingduck.com\/articles\/version-control#webpage\",\"url\":\"https:\/\/programmingduck.com\/articles\/version-control\",\"name\":\"Version control - Everything you need to know - Programming Duck\",\"isPartOf\":{\"@id\":\"https:\/\/programmingduck.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/programmingduck.com\/articles\/version-control#primaryimage\"},\"datePublished\":\"2020-09-03T18:00:22+00:00\",\"dateModified\":\"2020-12-06T10:06:22+00:00\",\"author\":{\"@id\":\"https:\/\/programmingduck.com\/#\/schema\/person\/46730127720765af154214808615385e\"},\"description\":\"Find out everything you need to know about version control and git.\",\"breadcrumb\":{\"@id\":\"https:\/\/programmingduck.com\/articles\/version-control#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/programmingduck.com\/articles\/version-control\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/programmingduck.com\/articles\/version-control#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/programmingduck.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Version control &#8211; Everything you need to know\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/programmingduck.com\/#\/schema\/person\/46730127720765af154214808615385e\",\"name\":\"Spyros Argalias\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/programmingduck.com\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/904c6e2d22d34978942ee1e996d09b66bc47aeb65473b10fc6bb1e16f0237d7d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/904c6e2d22d34978942ee1e996d09b66bc47aeb65473b10fc6bb1e16f0237d7d?s=96&d=mm&r=g\",\"caption\":\"Spyros Argalias\"},\"url\":\"https:\/\/programmingduck.com\/articles\/author\/sargalias\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Version control - Everything you need to know - Programming Duck","description":"Find out everything you need to know about version control and git.","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:\/\/programmingduck.com\/articles\/version-control","og_locale":"en_US","og_type":"article","og_title":"Version control - Everything you need to know - Programming Duck","og_description":"Find out everything you need to know about version control and git.","og_url":"https:\/\/programmingduck.com\/articles\/version-control","og_site_name":"Programming Duck","article_published_time":"2020-09-03T18:00:22+00:00","article_modified_time":"2020-12-06T10:06:22+00:00","og_image":[{"width":3840,"height":2560,"url":"https:\/\/programmingduck.com\/wp-content\/uploads\/2020\/09\/clement-h-95YRwf6CNw8-unsplash-scaled.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"Spyros Argalias","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/programmingduck.com\/#website","url":"https:\/\/programmingduck.com\/","name":"Programming Duck","description":"Improve your programming","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/programmingduck.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/programmingduck.com\/articles\/version-control#primaryimage","inLanguage":"en-US","url":"https:\/\/programmingduck.com\/wp-content\/uploads\/2020\/09\/clement-h-95YRwf6CNw8-unsplash-scaled.jpg","contentUrl":"https:\/\/programmingduck.com\/wp-content\/uploads\/2020\/09\/clement-h-95YRwf6CNw8-unsplash-scaled.jpg","width":3840,"height":2560},{"@type":"WebPage","@id":"https:\/\/programmingduck.com\/articles\/version-control#webpage","url":"https:\/\/programmingduck.com\/articles\/version-control","name":"Version control - Everything you need to know - Programming Duck","isPartOf":{"@id":"https:\/\/programmingduck.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/programmingduck.com\/articles\/version-control#primaryimage"},"datePublished":"2020-09-03T18:00:22+00:00","dateModified":"2020-12-06T10:06:22+00:00","author":{"@id":"https:\/\/programmingduck.com\/#\/schema\/person\/46730127720765af154214808615385e"},"description":"Find out everything you need to know about version control and git.","breadcrumb":{"@id":"https:\/\/programmingduck.com\/articles\/version-control#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/programmingduck.com\/articles\/version-control"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/programmingduck.com\/articles\/version-control#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/programmingduck.com\/"},{"@type":"ListItem","position":2,"name":"Version control &#8211; Everything you need to know"}]},{"@type":"Person","@id":"https:\/\/programmingduck.com\/#\/schema\/person\/46730127720765af154214808615385e","name":"Spyros Argalias","image":{"@type":"ImageObject","@id":"https:\/\/programmingduck.com\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/904c6e2d22d34978942ee1e996d09b66bc47aeb65473b10fc6bb1e16f0237d7d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/904c6e2d22d34978942ee1e996d09b66bc47aeb65473b10fc6bb1e16f0237d7d?s=96&d=mm&r=g","caption":"Spyros Argalias"},"url":"https:\/\/programmingduck.com\/articles\/author\/sargalias"}]}},"_links":{"self":[{"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/posts\/380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/comments?post=380"}],"version-history":[{"count":0,"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/posts\/380\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/media\/424"}],"wp:attachment":[{"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/media?parent=380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/categories?post=380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programmingduck.com\/wp-json\/wp\/v2\/tags?post=380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}