<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[git-starters]]></title><description><![CDATA[git-starters]]></description><link>https://blog.paperlesscode.com</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 19:13:43 GMT</lastBuildDate><atom:link href="https://blog.paperlesscode.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Git & GitHub Starters !]]></title><description><![CDATA[Feeling overwhelmed by Git and GitHub? Don’t worry, because it’s completely natural, especially when you’re just starting out. But guess what? You have opened just the right blog! This guide will walk you step-by-step through the setup process and es...]]></description><link>https://blog.paperlesscode.com/git-github-starters</link><guid isPermaLink="true">https://blog.paperlesscode.com/git-github-starters</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Git]]></category><dc:creator><![CDATA[Saurav Pratap Singh]]></dc:creator><pubDate>Sat, 10 Jan 2026 13:19:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1768051123402/66ecb8eb-086d-41fb-aab3-5d351763172e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Feeling overwhelmed by Git and GitHub? Don’t worry, because it’s completely natural, especially when you’re just starting out. But guess what? You have opened just the right blog! This guide will walk you step-by-step through the setup process and essential commands, making the whole experience smooth and stress-free. By the end, you’ll feel confident managing your code, collaborating effortlessly, and taking your first big steps into the world of version control.</p>
<h3 id="heading-from-chaos-to-clarity">From Chaos to Clarity</h3>
<p>Imagine this: You are the part of a team of coders, each working on a different task. One teammate is developing a shiny new feature, another is optimising an old one, someone else is debugging a tricky issue, and another is clearing out legacy code to make way for something better—all within the same codebase. Sounds chaotic, right?</p>
<p>This is exactly where <strong>version control</strong> (e.g. Git, Mercurial SCM, Fossil etc.) comes into the picture</p>
<h2 id="heading-getting-started-installing-git">Getting Started - Installing Git</h2>
<p>To begin using Git, you'll need to install it on your local machine. Follow these instructions for your operating system:</p>
<p>On Linux</p>
<ol>
<li><p>Open the terminal and type the following command based on your distribution:</p>
<ul>
<li><p>For Ubuntu/Debian: <code>sudo apt-get ins/tall git</code></p>
</li>
<li><p>For Fedora: <code>sudo dnf install git</code></p>
</li>
</ul>
</li>
</ol>
<p>On MacOs</p>
<ol>
<li>Open the Terminal and type <code>brew install git</code> (requires Homebrew).</li>
</ol>
<p>On Windows</p>
<ol>
<li><p>Download the latest version from <a target="_blank" href="https://git-scm.com/downloads/win"><strong>Git for Windows</strong></a>.</p>
</li>
<li><p>Run the installer and follow the prompts, accepting the default settings.</p>
</li>
</ol>
<p>After you have successfully installed Git, you can verify it by running the command <code>git --version</code>, if you get a version number, you are ready to proceed!</p>
<h3 id="heading-configure-git">Configure Git</h3>
<p>Now that you have git installed in your system, it is time to configure it which could be done by following the below steps in git-bash:</p>
<ol>
<li><pre><code class="lang-plaintext">   git config --global user.name "Your Name"
   git config --global user.email "your.email@example.com"
</code></pre>
<p> The above command sets up your identity which would be visible to other coders collaborating to the project, the <code>--global</code> keyword sets up your name and email fixed for any project that you open up in your system.</p>
<p> In case you want to have different name and email id associated with different projects while working on the same system, you need to navigate to the folder containing your Git repository and open git-bash there and run the following commands:</p>
</li>
</ol>
<pre><code class="lang-plaintext">git config user.name "Your Local Name"
git config user.email "local.email@example.com"
</code></pre>
<ol start="2">
<li><p>You can check your configurations at global level by running:</p>
<pre><code class="lang-plaintext"> git config --global --list
</code></pre>
<p> If you want to check your configurations locally in a project, that could be done by running</p>
<pre><code class="lang-plaintext"> git config --list
</code></pre>
</li>
</ol>
<h3 id="heading-basic-git-commands">Basic Git Commands</h3>
<p>Once you have successfully configured your git, the next step is to get used to the commands which are most widely used while used git. These commands are the ones you would be using almost 90% of times in your development journey.</p>
<ol>
<li><p>Initialise an empty repository</p>
<pre><code class="lang-powershell"> git init
</code></pre>
<p> The git init command tells git to now register a project with git, i.e. Git will be looking at the different changes that you make in it and would provide you different options related to it.</p>
</li>
<li><p>Check Status</p>
<pre><code class="lang-powershell"> git status
</code></pre>
<p> When working on a project, you often deal with multiple files at the same time. Some files may be newly created, some already tracked, others modified, and some even deleted. With so many possible combinations of file states, it’s important to know <strong>where your project currently stands in Git</strong>.The git status provides a <strong>summary of the current state of your repository</strong> at that point in time. It tells you:</p>
<ol>
<li><p>which files are <strong>untracked</strong></p>
</li>
<li><p>which files are <strong>modified</strong></p>
</li>
<li><p>which files are <strong>staged for commit</strong></p>
</li>
<li><p>which files are <strong>deleted</strong></p>
</li>
</ol>
</li>
<li><p>Adding files to the staging area</p>
<pre><code class="lang-powershell"> git add &lt;fileName <span class="hljs-number">1</span>&gt; &lt;fileName <span class="hljs-number">2</span>&gt; <span class="hljs-comment">#to add a particular file to the staging area</span>
 git add . <span class="hljs-comment">#to add all the files in one go to the staging area</span>
</code></pre>
<p> The git addis the command that <strong>tells Git which changes you want to include in the next commit</strong>. Git does <strong>not</strong> automatically track every change you make. Instead, it uses an intermediate area called the <strong>staging area</strong> (or <strong>index</strong>). It can track new files, mark modified files to be committed, prepares a snapshor of your changes for the next commit.</p>
</li>
<li><p>Save your Changes</p>
<pre><code class="lang-powershell"> git commit <span class="hljs-literal">-m</span> <span class="hljs-string">"message"</span>
</code></pre>
<p> You use git commit when you have staged a logical set of changes and want to permanently record them in the repository. It takes the changes from the staging area and creates a snapshot in Git’s history, along with a commit message that explains why the change was made. Once committed, these changes become part of the project’s timeline and can be reviewed, reverted, or shared with others.</p>
</li>
<li><p>Check Logs</p>
<pre><code class="lang-powershell"> git log <span class="hljs-comment">#show complete commit history</span>
 git log -<span class="hljs-literal">-oneline</span> <span class="hljs-comment">#display commits in one-line format</span>
</code></pre>
<p> We aim to use git log when we want to inspect the commit history of a project. It does not change anything in your repository; instead, it shows a chronological list of commits, helping us understand how the code evolved over time, track when and why changes were introduced, and identify specific commits for debugging or review.</p>
</li>
</ol>
<h2 id="heading-basic-developer-workflow-using-git-from-scratch">Basic Developer Workflow using Git (From Scratch)</h2>
<p>In this section we would be discussing a life of developer from GIT’s pov:</p>
<p>You start a brand-new project called <code>abc</code>. Since you want all the changes that you make while developing this project to be tracked so that you can revert back or work in parallel with other developers, you decide to first initialize Git in the project.</p>
<pre><code class="lang-powershell">git inti
</code></pre>
<p>Now Git has started monitoring your project.</p>
<p>You have seen other developers using git and have come to know about a convention where most developers seem to work around the <code>main</code> branch which represents the stable version of their code.</p>
<pre><code class="lang-powershell">git checkout <span class="hljs-literal">-b</span> main
</code></pre>
<p>You are now on the <code>main</code> branch and ready to start development.</p>
<p>You create a few files and begin writing code. Before saving anything permanently, you want to check where you currently stand.</p>
<pre><code class="lang-powershell">git status
</code></pre>
<p>Git shows you which files are new, which are modified, and which are not yet being tracked.</p>
<p>Once your initial code is ready, you decide to prepare it for saving. You add the relevant files to the staging area so Git knows they should be included in the next snapshot.</p>
<pre><code class="lang-powershell">git add .
</code></pre>
<p>At this point, the changes are staged but not yet saved.</p>
<p>You are happy with the work so far and want to record this version of the project. You create a commit with a meaningful message.</p>
<pre><code class="lang-powershell">git commit <span class="hljs-literal">-m</span> <span class="hljs-string">"Initial setup of abc project"</span>
</code></pre>
<p>This commit becomes a permanent checkpoint in your project’s history.</p>
<p>As development continues, you want to see how your project has evolved over time. You check the commit history.</p>
<pre><code class="lang-powershell">git log
</code></pre>
<p>Git displays all the commits made so far, helping you understand the timeline of changes.</p>
<p>Now it’s time to back up your work and share it with others. You push your local commits to a remote repository.</p>
<pre><code class="lang-powershell">git push origin main
</code></pre>
<p>Your code is now safely stored on the remote repository.</p>
<p>Later, another developer makes changes to the same project. Before continuing your work, you pull the latest updates to stay in sync.</p>
<pre><code class="lang-powershell">git pull origin main
</code></pre>
<p>This is how developers on a daily basis <strong>write code, check status, add changes, commit, review history, push, and pull.</strong></p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Version Control system is a part of the development cycle and in this article, I have tried to explain the basic commands for git which could be used in day to day scenarios when working in the collaboration with the other developers on a project.</p>
<p>There is more to git, but this is the bare minimum which every developer should know. In further blogs we would be discussing more commands and strategies when working with git.</p>
]]></content:encoded></item><item><title><![CDATA[Why Version Control Exists: The Pen-drive Problem]]></title><description><![CDATA[Before the introduction of any version control system, there were developers and there was code.
In this blog we shall discuss, why we needed a version control in the first place and how did developers found a workaround without this.
Understanding t...]]></description><link>https://blog.paperlesscode.com/why-version-control-exists-the-pen-drive-problem</link><guid isPermaLink="true">https://blog.paperlesscode.com/why-version-control-exists-the-pen-drive-problem</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Git]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[version control]]></category><category><![CDATA[version control systems]]></category><dc:creator><![CDATA[Saurav Pratap Singh]]></dc:creator><pubDate>Thu, 01 Jan 2026 16:01:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1767283207620/8d03442a-0ed6-4549-8930-0a8629b7dd21.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Before the introduction of any version control system, there were developers and there was code.</p>
<p>In this blog we shall discuss, why we needed a version control in the first place and how did developers found a workaround without this.</p>
<h2 id="heading-understanding-the-problem">Understanding the problem</h2>
<p>Suppose you have not been introduced to the concept of version control and you have code on your system, now whenever you code you need to make sure the code is perfect and runs without any bug, but in real life scenarios that is something which cannot be achieved. Code that is written will have bugs and would be required to fix, and there would be times when you would need to undo a particular segment or feature for your code to run i.e. get back to the previous version of your software.</p>
<p>In such a case, the simplest thing would be to create checkpoints. These checkpoints would be such that you write a particular feature of the code and save it as feat_1. Now moving forward when you have a new feature to introduce in your software, you make a copy of feat_1 and keep it as feat_2 and continue to code in it because you never know when you might need to revert back the feature. Even when working on the latest feature, you might need different checkpoints for the sub features, so in such a case what you do is that you would create copies of feat_2 itself, eg: feat_2_sub1.</p>
<p>Now this would work fine when the project is small, you can simply keep all of the code backups in your pen-drive and retrieve them as required, but as the project keeps on growing it would just complicate things out.</p>
<p>There could be scenarios when you are working on two features in parallel, i.e. feat_2 and feat_3 and have two independent copies created from the base code i.e. feat_1. Now when you try to combine both the features it would be a hassle to keep both features and realise what file has changed and what lines are affected.</p>
<p>Another scenario where the pen-drive method is quite ineffective is when you have a group of developers working together on a software, you will need to share the pen-drive which consists all your code to the another developer and what if the other developer does accidental changes in the base code i.e. feat_1 itself? You will have no way to find what changes were done or ways to revert the changes in most scenarios. In such a case, the pen-drive method to store code or distribute with other fellow developers would be a nightmare.</p>
<h2 id="heading-solution">Solution</h2>
<p>This problem is already solved by introduction of GIT (a version control system) by <strong>Linus Torvalds</strong> when he needed something to manage his main project Linux !</p>
<p>A version control system keeps tracks of our changes with proper timestamps and descriptions as to justify why that is a checkpoint. It is really helpful in softwares with huge code bases because it provides features like branching and also allows to work on multiple features in parallel and proper merging of the features. Each saved checkpoint is essentially a <strong>version</strong> of the software i.e. working state that we can return to later.  </p>
<p>This removes the hassle of storing the code as separate files in a storage like pen-drive and keeps a record of your changes in the code base itself. Unlike copying entire folders, Git stores <strong>only the changes (diffs)</strong> between versions, making it efficient and traceable. And every change that is saved as a checkpoint has a description attached to it which could be others to debug or revert the code at critical times.  </p>
<p>A version control system (e.g. GIT) does not prevent bugs or write better code for us — it simply gives us the confidence to experiment, knowing we can always recover.</p>
]]></content:encoded></item></channel></rss>