{"id":166,"date":"2019-02-19T07:13:00","date_gmt":"2019-02-19T07:13:00","guid":{"rendered":""},"modified":"2019-09-18T16:54:46","modified_gmt":"2019-09-18T11:24:46","slug":"git-inside-out","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2019\/02\/19\/git-inside-out\/","title":{"rendered":"Git Inside Out"},"content":{"rendered":"<div><b style=\"font-size:small;color:inherit;\"><span style=\"background:#ffffff;font-size:large;\">Git Inside-Out<br \/>\n<\/span><\/b><\/div>\n<div style=\"line-height:100%;margin-bottom:0;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/images.pexels.com\/photos\/212286\/pexels-photo-212286.jpeg?auto=compress&amp;cs=tinysrgb&amp;h=650&amp;w=940\" alt=\"Man Wearing Black and White Stripe Shirt Looking at White Printer Papers on the Wall\" width=\"640\" height=\"426\" \/><\/p>\n<p class=\"separator\" style=\"clear:both;text-align:center;\">\n<\/div>\n<p>Git is basically a file-system where you can retrieve your content through addresses. It simply means that you can insert any kind of data into git <span style=\"font-variant:normal;\"><span style=\"color:black;\"><span style=\"font-size:small;\"><span style=\"letter-spacing:normal;\"><span style=\"font-style:normal;\"><span style=\"font-weight:normal;\">for which Git will hand you back a unique key you can use later to retrieve that content. We would be learning #gitinsideout through this blog<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\"><span style=\"color:black;\"><span style=\"font-size:small;\">The Git object model has three types: blobs (for files), trees (for folder) and commits.\u00a0<\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;\"><span style=\"color:black;\"><span style=\"font-size:small;\">Objects are immutable (they are added but not changed) and every object is identified by its unique SHA-1 hash<br \/>\nA blob is just the contents of a file. By default, every new version of a file gets a new blob, which is a snapshot of the file (not a delta like many other versioning systems).<br \/>\nA tree is a list of references to blobs and trees.<br \/>\nA commit is a reference to a tree, a reference to parent commit(s) and some decoration (message, author).<\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;widows:2;\"><span style=\"color:black;\"><span style=\"font-size:small;\">Then there are branches and tags, which are typically just references to commits.<\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\">\n<p dir=\"ltr\" style=\"text-align:left;\"><span style=\"color:#515151;\"><span style=\"font-size:small;\"><span style=\"color:black;\"><span style=\"font-size:small;\">Git stores the data in our .<\/span><\/span><span style=\"color:black;\"><span style=\"font-size:small;\"><b>git\/objects <\/b><\/span><\/span><span style=\"color:black;\"><span style=\"font-size:small;\">directory. <\/span><\/span><\/span><\/span><span style=\"color:black;\"><span style=\"font-size:small;\">After initialising a git repository, it automatically creates .git\/objects\/pack and .git\/objects\/info with no regular file. After pushing some files, it would reflect in the .git\/objects\/ folder<\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\"><span style=\"color:#f58220;\"><span style=\"color:#444444;font-size:small;\"><u>OBJECT Blob<\/u><\/span><\/span><br \/>\n<span style=\"color:#f58220;\"><span style=\"font-size:small;\"><br \/>\n<\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\"><span style=\"color:black;\"><span style=\"font-size:small;\">blob stores the content of a file and we can check its content by command<\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\"><span style=\"color:black;\"><span style=\"font-size:small;\">git cat-file -p <\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\"><span style=\"color:black;\"><span style=\"font-size:small;\">or git show <\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;\"><span style=\"color:#f58220;\"><span style=\"color:#666666;font-size:small;\"><u>OBJECT Tree<\/u><\/span><\/span><\/p>\n<p style=\"border:none;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;margin-bottom:0;orphans:2;padding:0;widows:2;\"><span style=\"color:black;\"><span style=\"font-size:small;\">A tree is a simple object that has a bunch of pointers to blobs and other trees &#8211; it generally represents the contents of a directory or sub-directory.<\/span><\/span><\/p>\n<p style=\"border:none;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;margin-bottom:0;orphans:2;padding:0;widows:2;\"><span style=\"color:black;\"><span style=\"font-size:small;\">We can use git ls-tree to list the content of the given tree object<\/span><\/span><\/p>\n<p style=\"border:none;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;margin-bottom:0;orphans:2;padding:0;widows:2;\">\n<p style=\"border:none;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;margin-bottom:0;orphans:2;padding:0;widows:2;\"><span style=\"color:#f58220;\"><span style=\"color:#666666;font-size:small;\"><u>OBJECT Commit<\/u><\/span><\/span><br \/>\n<span style=\"color:#f58220;\"><span style=\"color:#666666;font-size:small;\"><br \/>\n<\/span><\/span><\/p>\n<p style=\"border:none;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;margin-bottom:0;orphans:2;padding:0;widows:2;\"><span style=\"color:#111111;\"><span style=\"font-size:small;\">The &#8220;commit&#8221; object links a physical state of a tree with a description of how we got there and why.<\/span><\/span><\/p>\n<p><b>A commit is defined by tree, parent, author, committer, comment<\/b><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\"><span style=\"color:black;\"><span style=\"font-size:small;\">All three objects ( blob,Tree,Commit) are explained in details with the help of a pictorial diagram.<\/span><\/span><\/p>\n<p style=\"font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p>Often we make changes to our code and push it to SCM. I was doing it once and made multiple changes, I was thinking it would be great if I could see the details of changes through local repository itself instead to go to a remote repository\u00a0server. That pushed me to explore Git more deeply.<\/p>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p>I just created a local remote repository\u00a0with the help of git bare repository. Made some changes and tracked those changes(type, content, size etc).<\/p>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p>Below example will help you understand the concept behind it.<\/p>\n<p>Suppose we have cloned a repository\u00a0named kunal:<\/p>\n<p>Inside the folder where we have cloned the repository, go to the folder kunal then:<\/p>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p style=\"line-height:100%;margin-bottom:0;\"><b>cd kunal\/.git\/<\/b><\/p>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p>I have added content(hello) to readme.md and made many changes into the same repository\u00a0as:<\/p>\n<p>adding README.md<\/p>\n<p>updating Readme.md<\/p>\n<p>adding 2 files modifying one<\/p>\n<p>pull request<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">commit(adding directory).<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">Go to the refer folder inside .git and take the SHA value for the master head:<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\"><a style=\"clear:left;float:left;margin-bottom:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/4dd3f-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/4dd3f-1.png?w=300\" width=\"400\" height=\"21\" border=\"0\" \/><\/a><\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p>This commit object we can explore further with the help of cat-file which will show the type and content of tree and commit object:<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/e8231-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/e8231-4.png?w=300\" width=\"400\" height=\"140\" border=\"0\" \/><\/a><\/div>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p>Now we can see a tree object inside the tree object. Further, we can see the details for the tree object which in turn contains a blob object as below:<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/71d2a-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/71d2a-5.png?w=300\" width=\"400\" height=\"85\" border=\"0\" \/><\/a><\/div>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">Below is the pictorial representation for the same:<\/p>\n<p><a style=\"margin-left:auto;margin-right:auto;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/9f497-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/9f497-6.png?w=300\" width=\"400\" height=\"171\" border=\"0\" \/><\/a><\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<table class=\"tr-caption-container\" style=\"margin-left:auto;margin-right:auto;text-align:center;\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td style=\"text-align:center;\"><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align:left;\">More elaborated representation for the same :<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/07e64-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/07e64-7.png?w=300\" width=\"400\" height=\"200\" border=\"0\" \/><\/a><\/div>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p>Below are the commands for checking the content, type and size of objects( blob, tree and commit)<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<div style=\"font-weight:normal;line-height:100%;margin-bottom:0;\"><b>kunal@work:\/home\/git\/test\/kunal# cat README.md<\/b><\/div>\n<div style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">hello<\/div>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p style=\"line-height:100%;margin-bottom:0;\">We can find the details of objects( size,type,content) with the help of #git cat-file<\/p>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p style=\"line-height:100%;margin-bottom:0;\">git-cat-file:- Provide content, type or size information for repository objects<\/p>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p style=\"line-height:100%;margin-bottom:0;\">You an verify the content of commit object and its type with git cat-file as below:<\/p>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/bf5d8-8.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/bf5d8-8.png?w=300\" width=\"400\" height=\"70\" border=\"0\" \/><\/a><\/div>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">kunal@work:\/home\/git\/test\/kunal\/.git # cat logs\/refs\/heads\/master<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/a3fb6-9.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/a3fb6-9.png?w=300\" width=\"400\" height=\"76\" border=\"0\" \/><\/a><\/div>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">Checking the content of a blob object(README.md, kunal and sandy)<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"line-height:100%;margin-bottom:0;\">As we can see first one is adding read me , so it is giving null parent(00000&#8230;000) and its unique SHA-1 is <b>912a4e85afac3b737797b5a09387a68afad816d6<\/b><\/p>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p style=\"line-height:100%;margin-bottom:0;\">Below are the details that we can fetch from above SHA-1 with the help of git cat-file :<\/p>\n<p style=\"line-height:100%;margin-bottom:0;\">\n<p style=\"line-height:100%;margin-bottom:0;\">\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/1219e-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/1219e-1.png?w=300\" width=\"400\" height=\"21\" border=\"0\" \/><\/a><\/div>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/b3024-10.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/b3024-10.png?w=300\" width=\"400\" height=\"61\" border=\"0\" \/><\/a><\/div>\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/0b6a5-12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/0b6a5-12.png?w=300\" width=\"400\" height=\"148\" border=\"0\" \/><\/a><\/div>\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><\/div>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">Consider one example of merge:<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">Created a test branch and made changes and merged it to master.<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/63056-13.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/63056-13.png?w=300\" width=\"400\" height=\"114\" border=\"0\" \/><\/a><\/div>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/9de4f-14.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/9de4f-14.png?w=300\" width=\"400\" height=\"88\" border=\"0\" \/><\/a><\/div>\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/e1235-15.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/e1235-15.png?w=300\" width=\"400\" height=\"56\" border=\"0\" \/><\/a><\/div>\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/46ae6-16.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/46ae6-16.png?w=300\" width=\"400\" height=\"80\" border=\"0\" \/><\/a><\/div>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p>Here you can notice we have two parents because of a merge request<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\"><a style=\"clear:left;float:left;margin-bottom:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/4c352-17.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/4c352-17.png?w=300\" width=\"400\" height=\"155\" border=\"0\" \/><\/a><\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p>You can further see the content, size, type of repository\u00a0#gitobjects like:<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n<div class=\"separator\" style=\"clear:both;text-align:center;\"><a style=\"margin-left:1em;margin-right:1em;\" href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/0e324-18.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2019\/02\/0e324-18.png?w=300\" width=\"400\" height=\"110\" border=\"0\" \/><\/a><\/div>\n<div style=\"font-weight:normal;\"><\/div>\n<p><b>Summary<\/b><\/p>\n<div style=\"font-weight:normal;\"><\/div>\n<p style=\"font-weight:normal;\">This is pretty lengthy article but I\u2019ve tried to make it as transparent and clear as possible. Once you work through the article and understand all concepts I showed here you will be able to work with Git more effectively.<\/p>\n<p dir=\"ltr\" style=\"text-align:left;\">This explanation gives the details regarding tree data structure and internal storage of objects. You can check the content (differences\/commits)of the files through local .git repository which stores each object with unique\u00a0 SHA\u00a0 hash. This would clear basically the internal working of git.<br \/>\nHopefully, this blog would help you in understanding the git inside out and helps in troubleshooting things related to git.<\/p>\n<p style=\"font-weight:normal;line-height:100%;margin-bottom:0;\">\n","protected":false},"excerpt":{"rendered":"<p>Git Inside-Out Git is basically a file-system where you can retrieve your content through addresses. It simply means that you can insert any kind of data into git for which Git will hand you back a unique key you can use later to retrieve that content. We would be learning #gitinsideout through this blog The &hellip; <a href=\"https:\/\/opstree.com\/blog\/2019\/02\/19\/git-inside-out\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Git Inside Out&#8221;<\/span><\/a><\/p>\n","protected":false},"author":171775670,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[1],"tags":[768739295,101807,42722],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-2G","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/166"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/171775670"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=166"}],"version-history":[{"count":6,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/166\/revisions"}],"predecessor-version":[{"id":1350,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/166\/revisions\/1350"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}