<?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 for Beginners]]></title><description><![CDATA[Git for Beginners]]></description><link>https://git-for-biginers.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 18:00:41 GMT</lastBuildDate><atom:link href="https://git-for-biginers.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Understanding HTML Tags and Elements
]]></title><description><![CDATA[1. What is HTML?
HTML stands for HyperText Markup Language.
We use HTML to create the structure of a web page.
For example, think about a normal website. It can have:

A heading

Some paragraphs

Imag]]></description><link>https://git-for-biginers.hashnode.dev/understanding-html-tags-and-elements</link><guid isPermaLink="true">https://git-for-biginers.hashnode.dev/understanding-html-tags-and-elements</guid><dc:creator><![CDATA[Nandani Yadav]]></dc:creator><pubDate>Thu, 24 Sep 2026 11:45:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69515c2a2cc131314121c74c/52fdc3a7-b012-45e1-b4f2-f49ef5225121.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>1. What is HTML?</h2>
<p>HTML stands for <strong>HyperText Markup Language</strong>.</p>
<p>We use HTML to create the <strong>structure of a web page</strong>.</p>
<p>For example, think about a normal website. It can have:</p>
<ul>
<li><p>A heading</p>
</li>
<li><p>Some paragraphs</p>
</li>
<li><p>Images</p>
</li>
<li><p>Buttons</p>
</li>
<li><p>Links</p>
</li>
<li><p>Forms</p>
</li>
<li><p>Lists</p>
</li>
</ul>
<p>HTML helps us tell the browser what each part of the page is.</p>
<p>For example:</p>
<pre><code class="language-plaintext">&lt;h1&gt;Welcome to My Website&lt;/h1&gt;

&lt;p&gt;I am learning HTML.&lt;/p&gt;

&lt;button&gt;Click Me&lt;/button&gt;
</code></pre>
<p>Here:</p>
<ul>
<li><p><code>&lt;h1&gt;</code> creates a heading</p>
</li>
<li><p><code>&lt;p&gt;</code> creates a paragraph</p>
</li>
<li><p><code>&lt;button&gt;</code> creates a button</p>
</li>
</ul>
<h2>2. What is an HTML Tag?</h2>
<p>When I first saw HTML code, I noticed that most things were written inside angle brackets <code>&lt; &gt;</code>.</p>
<p>For example:</p>
<pre><code class="language-plaintext">&lt;h1&gt;
&lt;p&gt;
&lt;button&gt;
</code></pre>
<p>These are called <strong>HTML tags</strong>.</p>
<p>A tag tells the browser what type of content we are writing.</p>
<p>For example:</p>
<pre><code class="language-plaintext">&lt;p&gt;Hello!&lt;/p&gt;
</code></pre>
<p>Here, the browser understands that <code>Hello!</code> is a paragraph because we used the <code>&lt;p&gt;</code> tag.</p>
<p>Similarly:</p>
<pre><code class="language-plaintext">&lt;h1&gt;My First Website&lt;/h1&gt;
</code></pre>
<p>The <code>&lt;h1&gt;</code> tag tells the browser that this text is a main heading.</p>
<p>So, in simple words: An HTML tag is a special keyword inside <code>&lt; &gt;</code> that tells the browser what kind of content we want to display.</p>
<h2>3. Opening Tag, Content and Closing Tag</h2>
<p>Let's take a very simple example:</p>
<pre><code class="language-plaintext">&lt;p&gt;I am learning HTML&lt;/p&gt;
</code></pre>
<p>There are three important parts here:</p>
<pre><code class="language-plaintext">&lt;p&gt;     I am learning HTML     &lt;/p&gt;
 ↑              ↑                ↑
Opening        Content          Closing
  Tag                              Tag
</code></pre>
<h3>Opening Tag</h3>
<pre><code class="language-plaintext">&lt;p&gt;
</code></pre>
<p>This tells the browser:</p>
<p><strong>“A paragraph starts from here.”</strong></p>
<h3>Content</h3>
<pre><code class="language-plaintext">I am learning HTML
</code></pre>
<p>This is the actual content that will appear on the web page.</p>
<h3>Closing Tag</h3>
<pre><code class="language-plaintext">&lt;/p&gt;
</code></pre>
<p>This tells the browser:</p>
<p><strong>“The paragraph ends here.”</strong></p>
<p>The main difference I noticed between opening and closing tags is the <code>/</code>.</p>
<pre><code class="language-plaintext">&lt;p&gt;  → Opening tag

&lt;/p&gt; → Closing tag
</code></pre>
<h2>4. What is an HTML Element?</h2>
<p>This was one thing that confused me initially:</p>
<p><strong>Is a tag and an element the same thing?</strong></p>
<p>They are related, but they are not exactly the same.</p>
<p>Let's look at this:</p>
<pre><code class="language-plaintext">&lt;p&gt;Hello World&lt;/p&gt;
</code></pre>
<p>Here:</p>
<pre><code class="language-plaintext">&lt;p&gt;  → Tag

&lt;/p&gt; → Tag
</code></pre>
<p>But this complete thing:</p>
<pre><code class="language-plaintext">&lt;p&gt;Hello World&lt;/p&gt;
</code></pre>
<p>is an <strong>HTML element</strong>.</p>
<p>So we can understand it like this:</p>
<pre><code class="language-plaintext">Opening Tag + Content + Closing Tag = HTML Element
</code></pre>
]]></content:encoded></item><item><title><![CDATA[Emmet for HTML: A Beginner’s Guide to Writing Faster Markup]]></title><description><![CDATA[When I started learning HTML, I used to write every tag manually.
For example, if I wanted to create a simple unordered list, I would write:
<ul>
  <li>HTML</li>
  <li>CSS</li>
  <li>JavaScript</li>
<]]></description><link>https://git-for-biginers.hashnode.dev/emmet-for-html-a-beginner-s-guide-to-writing-faster-markup</link><guid isPermaLink="true">https://git-for-biginers.hashnode.dev/emmet-for-html-a-beginner-s-guide-to-writing-faster-markup</guid><dc:creator><![CDATA[Nandani Yadav]]></dc:creator><pubDate>Tue, 22 Sep 2026 18:43:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69515c2a2cc131314121c74c/edde4b01-c183-4573-90e9-afab4482fb94.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I started learning HTML, I used to write every tag manually.</p>
<p>For example, if I wanted to create a simple unordered list, I would write:</p>
<pre><code class="language-plaintext">&lt;ul&gt;
  &lt;li&gt;HTML&lt;/li&gt;
  &lt;li&gt;CSS&lt;/li&gt;
  &lt;li&gt;JavaScript&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<p>This is completely fine when we are learning HTML. In fact, beginners should understand how HTML tags actually work.</p>
<p>But as I started writing more HTML, I noticed that I was typing the same tags again and again.</p>
<p>That’s when I learned about <strong>Emmet</strong>.</p>
<p>Emmet makes writing HTML faster by allowing us to type small abbreviations that are automatically expanded into complete HTML code.</p>
<p>In this blog, I’ll share what I learned about Emmet and some useful Emmet shortcuts that beginners can start using immediately.</p>
<p><img src="align=%22center%22" alt="" /></p>
<h2>1. What is Emmet?</h2>
<p>In very simple words:</p>
<p><strong>Emmet is like a shortcut language for writing HTML.</strong></p>
<p>Instead of typing complete HTML tags manually, we can write a short abbreviation and let Emmet generate the HTML for us.</p>
<p>For example, instead of writing:</p>
<pre><code class="language-plaintext">&lt;h1&gt;&lt;/h1&gt;
</code></pre>
<p>we can simply type:</p>
<pre><code class="language-plaintext">h1
</code></pre>
<p>and press <strong>Tab</strong> or select the Emmet suggestion.</p>
<p>It expands to:</p>
<pre><code class="language-plaintext">&lt;h1&gt;&lt;/h1&gt;
</code></pre>
<p>Another example:</p>
<pre><code class="language-plaintext">p
</code></pre>
<p>becomes:</p>
<pre><code class="language-plaintext">&lt;p&gt;&lt;/p&gt;
</code></pre>
<h2>2. Why is Emmet Useful for HTML Beginners?</h2>
<p>When learning HTML, we create elements such as:</p>
<pre><code class="language-plaintext">&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;button&gt;&lt;/button&gt;
&lt;section&gt;&lt;/section&gt;
</code></pre>
<p>Writing these manually is important in the beginning because we need to understand HTML syntax.</p>
<p>But once we understand the basics, repeatedly typing opening and closing tags can become time-consuming.</p>
<p>For example:</p>
<pre><code class="language-plaintext">&lt;div class="container"&gt;
  &lt;h1&gt;&lt;/h1&gt;
  &lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
</code></pre>
<p>With Emmet, the same structure can be generated using:</p>
<pre><code class="language-plaintext">div.container&gt;h1+p
</code></pre>
<p>This is why I find Emmet useful. It does not replace HTML knowledge. It simply helps us write the HTML we already understand more quickly.</p>
<h3>3. How Does Emmet Work Inside a Code Editor?</h3>
<p>Many modern code editors support Emmet. I use <strong>VS Code</strong> while learning web development.</p>
<p>The basic workflow is:</p>
<pre><code class="language-plaintext">Open HTML File
      ↓
Write Emmet Abbreviation
      ↓
Press Tab / Choose Suggestion
      ↓
Emmet Expands It
      ↓
Continue Writing HTML
</code></pre>
<p>For example, inside an HTML file, type:</p>
<pre><code class="language-plaintext">button
</code></pre>
<p>Press <strong>Tab</strong>.</p>
<p>You should get:</p>
<pre><code class="language-plaintext">&lt;button&gt;&lt;/button&gt;
</code></pre>
<p>For most basic HTML examples, we don't need to install a separate extension in VS Code because Emmet support is built in.</p>
<h2>4. Creating Basic HTML Elements</h2>
<p>The easiest Emmet shortcut is simply writing the name of the HTML element.</p>
<h3>Heading</h3>
<p>Emmet:</p>
<pre><code class="language-plaintext">h1
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;h1&gt;&lt;/h1&gt;
</code></pre>
<h3>Paragraph</h3>
<p>Emmet:</p>
<pre><code class="language-plaintext">p
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;p&gt;&lt;/p&gt;
</code></pre>
<h3>Button</h3>
<p>Emmet:</p>
<pre><code class="language-plaintext">button
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;button&gt;&lt;/button&gt;
</code></pre>
<h3>Section</h3>
<p>Emmet:</p>
<pre><code class="language-plaintext">section
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;section&gt;&lt;/section&gt;
</code></pre>
<h2>5. Adding Classes with Emmet</h2>
<p>In HTML, we often add classes to elements.</p>
<p>Normally, we might write:</p>
<pre><code class="language-plaintext">&lt;div class="container"&gt;&lt;/div&gt;
</code></pre>
<p>With Emmet, we can write:</p>
<pre><code class="language-plaintext">div.container
</code></pre>
<p>which expands to:</p>
<pre><code class="language-plaintext">&lt;div class="container"&gt;&lt;/div&gt;
</code></pre>
<p>Here, the <strong>dot (</strong><code>.</code><strong>)</strong> represents a class.</p>
<p>We can also add multiple classes.</p>
<pre><code class="language-plaintext">div.card.active
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;div class="card active"&gt;&lt;/div&gt;
</code></pre>
<p>A useful shortcut is that when we want a <code>div</code>, we don't even have to type <code>div</code>.</p>
<pre><code class="language-plaintext">.container
</code></pre>
<p>becomes:</p>
<pre><code class="language-plaintext">&lt;div class="container"&gt;&lt;/div&gt;
</code></pre>
<h3>6. Adding IDs with Emmet</h3>
<p>For an ID, Emmet uses the # symbol.</p>
<p>For example:</p>
<p>div#header</p>
<p>Output: </p><div id="header"></div><p></p>
<p>We can also combine an ID and a class:</p>
<p>div#header.container</p>
<p>Output: </p><div id="header" class="container"></div><p></p>
<p>An easy way I remember this is:</p>
<p>. → class</p>
<p>#→ id</p>
<h2>7. Adding Attributes</h2>
<p>Sometimes we need attributes such as <code>type</code>, <code>href</code>, <code>src</code>, or <code>placeholder</code>.</p>
<p>Emmet allows us to add attributes using square brackets <code>[]</code>.</p>
<p>For example:</p>
<pre><code class="language-plaintext">input[type="text"]
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;input type="text"&gt;
</code></pre>
<p>Another example:</p>
<pre><code class="language-plaintext">input[type="email"][placeholder="Enter your email"]
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;input type="email" placeholder="Enter your email"&gt;
</code></pre>
<p>This becomes useful when creating forms.</p>
<h3></h3>
<p>8. Adding Text Inside an Element</p>
<p>We can also add text using curly braces <code>{}</code>.</p>
<p>For example:</p>
<pre><code class="language-plaintext">button{Submit}
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;button&gt;Submit&lt;/button&gt;
</code></pre>
<p>Similarly:</p>
<pre><code class="language-plaintext">p{I am learning HTML and Emmet}
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;p&gt;I am learning HTML and Emmet&lt;/p&gt;
</code></pre>
<p>So I remember:</p>
<pre><code class="language-plaintext">{} → text content
</code></pre>
<h2>9. Creating Nested Elements</h2>
<p>HTML elements are often placed inside other elements.</p>
<p>For example:</p>
<pre><code class="language-plaintext">ul
 └── li
</code></pre>
<p>In Emmet, the <code>&gt;</code> <strong>symbol</strong> is used to create a child element.</p>
<pre><code class="language-plaintext">ul&gt;li
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;ul&gt;
  &lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<p>We can go one level deeper:</p>
<pre><code class="language-plaintext">div&gt;ul&gt;li
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;div&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
</code></pre>
<img src="https://cdn.hashnode.com/uploads/covers/69515c2a2cc131314121c74c/7609cb28-0fac-4854-a3e9-244b945b09e2.png" alt="" style="display:block;margin:0 auto" />

<h3></h3>
<p>10. Creating Sibling Elements</p>
<p>Sometimes elements are on the same level rather than inside one another.</p>
<p>For this, we use the + symbol.</p>
<p>For example:</p>
<p>h1+p</p>
<p>Output: </p><h1></h1>  <p></p>
<p></p>

<p>We can add more elements:</p>
<p>header+main+footer</p>
<p>Output: </p><header></header><p></p>
<main></main>

<footer></footer>

<p>So:</p>
<p>&gt;→ child element</p>
<p>+→ sibling element</p>
<h2>11. Repeating Elements Using Multiplication</h2>
<p>This is one of my favourite Emmet shortcuts.</p>
<p>Suppose we need five list items.</p>
<p>Instead of writing <code>&lt;li&gt;</code> five times, we can use the <code>*</code> operator.</p>
<pre><code class="language-plaintext">li*5
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;li&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
</code></pre>
<p>We can combine this with nesting:</p>
<pre><code class="language-plaintext">ul&gt;li*5
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;ul&gt;
  &lt;li&gt;&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<h3></h3>
<p>12. Numbering Repeated Elements</p>
<p>Emmet can also automatically add numbers to repeated elements using <code>$</code>.</p>
<p>For example:</p>
<pre><code class="language-plaintext">ul&gt;li{Item $}*3
</code></pre>
<p>Output:</p>
<pre><code class="language-plaintext">&lt;ul&gt;
  &lt;li&gt;Item 1&lt;/li&gt;
  &lt;li&gt;Item 2&lt;/li&gt;
  &lt;li&gt;Item 3&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<p>This is a small feature, but it can save time when creating sample HTML content.  </p>
<h3></h3>
<p>Quick Emmet Cheat Sheet</p>
<p>Here are some shortcuts that I found useful as a beginner:</p>
<table>
<thead>
<tr>
<th>Emmet</th>
<th>Meaning</th>
</tr>
</thead>
<tbody><tr>
<td><code>p</code></td>
<td>Paragraph</td>
</tr>
<tr>
<td><code>h1</code></td>
<td>Heading</td>
</tr>
<tr>
<td><code>.container</code></td>
<td>Div with a class</td>
</tr>
<tr>
<td><code>#header</code></td>
<td>Div with an ID</td>
</tr>
<tr>
<td><code>p.text</code></td>
<td>Paragraph with a class</td>
</tr>
<tr>
<td><code>div#app</code></td>
<td>Div with an ID</td>
</tr>
<tr>
<td><code>div&gt;p</code></td>
<td>Child element</td>
</tr>
<tr>
<td><code>h1+p</code></td>
<td>Sibling elements</td>
</tr>
<tr>
<td><code>li*5</code></td>
<td>Five list items</td>
</tr>
<tr>
<td><code>button{Submit}</code></td>
<td>Element with text</td>
</tr>
<tr>
<td><code>input[type="text"]</code></td>
<td>Element with attribute</td>
</tr>
<tr>
<td><code>ul&gt;li*3</code></td>
<td>Nested repeated elements</td>
</tr>
<tr>
<td><code>!</code></td>
<td>HTML boilerplate</td>
</tr>
</tbody></table>
]]></content:encoded></item><item><title><![CDATA[Inside Git: How It Works and the Role of the .git Folder]]></title><description><![CDATA[When I started learning Git, I mostly focused on commands like git add, git commit, and git log, etc. I knew what these commands did, but I didn't really know what was happening behind the scenes.
The]]></description><link>https://git-for-biginers.hashnode.dev/inside-git-how-it-works-git-internals</link><guid isPermaLink="true">https://git-for-biginers.hashnode.dev/inside-git-how-it-works-git-internals</guid><category><![CDATA[Git]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[Cohort2026]]></category><dc:creator><![CDATA[Nandani Yadav]]></dc:creator><pubDate>Tue, 22 Sep 2026 03:41:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69515c2a2cc131314121c74c/9da7a45f-0a92-45c8-9dbc-599a93f11775.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I started learning Git, I mostly focused on commands like git add, git commit, and git log, etc. I knew what these commands did, but I didn't really know what was happening behind the scenes.</p>
<p>Then I came across the <strong>.git</strong> folder and started wondering: What is stored inside it? How does Git remember my files? How does it know what changed?</p>
<p>In this article, I am going to explore the basics of how Git works internally and understand concepts like the <strong>.git</strong> folder, blobs, trees, commits, and hashes in simple terms.</p>
<p><strong>How Does Git Work Internally?</strong></p>
<p>Git does not simply store a copy of my project every time I make a commit. Instead, Git stores information about the content and structure of my project using objects such as blobs, trees, and commits.</p>
<p><strong>Understanding the .git Folder</strong></p>
<p>When we run <strong>git init</strong> inside a project, Git creates a hidden folder called <strong>.git</strong>.</p>
<pre><code class="language-plaintext">git init
</code></pre>
<pre><code class="language-plaintext">my-project/
│
├── index.html
├── style.css
└── .git/
</code></pre>
<p>The .git folder is basically the place where Git stores the information it needs to manage the repository. It contains the repository's history, configuration, references, and Git objects.</p>
<p>We should not normally edit or delete files inside <strong>.git</strong> manually.</p>
<p>For example:</p>
<p>After running <strong>ls -la .git</strong> , I could see a hidden <code>.git</code> folder in my project. This folder is created by Git when we initialize a repository. It stores the internal information Git needs to track the project and maintain its history.</p>
<p><code>.git</code> folder ye hai:</p>
<pre><code class="language-plaintext">.git/
│
├── COMMIT_EDITMSG
├── config
├── description
├── FETCH_HEAD
├── HEAD
├── hooks/
├── index
├── info/
├── logs/
├── objects/
└── refs/
</code></pre>
<p><strong>1.</strong> <code>objects/</code> : Git ke important objects yahin store hote hain:</p>
<pre><code class="language-plaintext">objects/
   │
   ├── Blob
   ├── Tree
   └── Commit
</code></pre>
<p>Blob → file ka content</p>
<p>Tree → files/folders ka structure</p>
<p>Commit → project snapshot + history information</p>
]]></content:encoded></item><item><title><![CDATA[Git for Beginners: Basics and Essential Commands]]></title><description><![CDATA[When I first heard about Git, I thought it was just another tool that developers use. But after learning about it, I understood that Git is a tool that helps us keep track of all changes we make in ou]]></description><link>https://git-for-biginers.hashnode.dev/git-for-beginners-basics-and-essential-commands</link><guid isPermaLink="true">https://git-for-biginers.hashnode.dev/git-for-beginners-basics-and-essential-commands</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[chaicode webdev cohort 2026]]></category><category><![CDATA[Git]]></category><dc:creator><![CDATA[Nandani Yadav]]></dc:creator><pubDate>Thu, 23 Jul 2026 18:37:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69515c2a2cc131314121c74c/9c677af5-9877-4b37-8d4f-575f9d1d7ad2.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I first heard about Git, I thought it was just another tool that developers use. But after learning about it, I understood that Git is a tool that helps us keep track of all changes we make in our projects.</p>
<p>Imagine you are writing a project. Every day you make some changes. One day you accidentally delete an important file. Git helps you revert to an earlier version of your project without losing your work.</p>
<p><strong>What is Git?</strong><br />Git is a distributed version control system that helps developers track changes in their projects. It allows developers to save different versions of their code and collaborate efficiently with teams.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69515c2a2cc131314121c74c/53473aff-46d9-4808-98cb-5c92c8a1532f.png" alt="" style="display:block;margin:0 auto" />

<p><strong>Why is Git used?</strong></p>
<p>Before Git, developers had to create multiple copies of the same project to save different versions. This made it difficult to manage changes. Git solves this problem by storing the complete history of the project. It also makes teamwork much easier because everyone can work on the same project without overwriting each other's code.</p>
<p><strong>Important Git Terms-</strong></p>
<p><strong>Repository:</strong></p>
<p>A repository is simply the place where our project and its history are stored. You can think of it as the main folder of your project that Git manages.</p>
<p>Example: If I am building a portfolio website, all my HTML, CSS, JavaScript files and their change history will be stored inside the Git Repository.</p>
<p><strong>Commit:</strong></p>
<p>A commit is like saving the progress of your work. Whenever we complete a small task, we create a commit so that we can remember what changes were made at that time.</p>
<p>Example: If I complete the login page today, I can create a commit with the message "Added Login Page" Tomorrow, if something breaks, I can easily return to this saved version.</p>
<p><strong>Branch:</strong></p>
<p>A branch allows developers to work on new features without affecting the main project. This is useful because we can test new ideas safely before adding them to the main code.</p>
<p><strong>Git Commands</strong></p>
<p><strong>git init -</strong> The command used to create a new Git repository inside our project folder. It tells Git that we want to start tracking this project.</p>
<pre><code class="language-plaintext">git init
</code></pre>
<p><strong>git status- Abhi project ki situation kya hai?</strong> This command shows the current state of our project. It tells us which files have been changed, added or are still untracked.</p>
<p><strong>git add-Changes ko staging area me bhejna</strong>: This command moves the selected files to the staging area so they are ready to be committed.</p>
<p><strong>git commit</strong>-<strong>Changes ka save point:</strong> This command saves our staged changes permanently in the Git history. It is always a good practice to write a meaningful commit message.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69515c2a2cc131314121c74c/e9d22013-b163-435e-980f-a24a26302fb2.png" alt="" style="display:block;margin:0 auto" />

<p><strong>git diff - Maine exactly kya change kiya?:</strong> This command shows the changes that are currently in my working directory but have not been staged yet.</p>
<pre><code class="language-plaintext">git diff
</code></pre>
<p>Example:</p>
<p>Pehle:</p>
<pre><code class="language-plaintext">&lt;h1&gt;Hello&lt;/h1&gt;
</code></pre>
<p>Ab:</p>
<pre><code class="language-plaintext">&lt;h1&gt;Hello, I am Nandani&lt;/h1&gt;
</code></pre>
<p><strong>git diff</strong> tumhe batayega ki kya line add/remove hui.<br />After making some changes, I don't always want to commit immediately. First, I can use <code>git diff</code> to check exactly what I changed. This is useful when I want to review my work before staging it.</p>
<p><strong>git log — Purani commits ki history:</strong></p>
<pre><code class="language-plaintext">commit abc123
Author: Nandani
Message: Add portfolio homepage

commit xyz456
Author: Nandani
Message: Create project structure
</code></pre>
<p>This command works like the history section of my project. It shows the commits that have been made and helps me understand how the project has changed over time.<br /><strong>Short version: git log --oneline</strong></p>
<p><strong>HEAD-(Mai abhi kaha hu?):</strong> HEAD is basically Git's way of pointing to where I am currently in the commit history. In normal work, it points to the latest commit on the current branch.</p>
<pre><code class="language-plaintext">Commit A → Commit B → Commit C
                         ↑
                        HEAD
</code></pre>
<p><strong>git branch — (Alag line me kaam karna):</strong><br />Ab maan lo tumhara main project ready hai. Tumhe ek <strong>new login page</strong> banana hai. Lekin tum main project ko disturb nahi karna chahte.</p>
<pre><code class="language-plaintext">git branch login-page
</code></pre>
<p>Ye new branch create karega.</p>
<p>Branches dekhne ke liye:</p>
<pre><code class="language-plaintext">git branch
</code></pre>
<p><strong>git clone — Existing project ko apne computer par lana:</strong> Agar GitHub par already project hai:</p>
<pre><code class="language-plaintext">git clone &lt;repository-url&gt;
</code></pre>
<p>git clone creates a local copy of an existing repository on my computer</p>
<p><strong>git push - Local se GitHub:</strong> Tumne locally commit kar liya. Ab GitHub par bhejna hai:</p>
<pre><code class="language-plaintext">git push
</code></pre>
<p>git push sends my local commits to the remote repository.</p>
<p><strong>git pull- GitHub se latest changes lena:</strong> Agar team member ne GitHub par changes push kiye hain:</p>
<pre><code class="language-plaintext">git pull
</code></pre>
<p>git pull gets the latest changes from the remote repository and integrates them into my current branch.</p>
]]></content:encoded></item><item><title><![CDATA[Why Version Control Exists: The Pendrive Problem]]></title><description><![CDATA[The Pendrive Story Every Developer Has Lived: Before Git, before GitHub, before “commit” and “push” became everyday words — developers still wrote code.But the way they managed it was… painful.
Life Before Version Control Systems
Imagine you’re a dev...]]></description><link>https://git-for-biginers.hashnode.dev/why-version-control-exists-the-pendrive-problem</link><guid isPermaLink="true">https://git-for-biginers.hashnode.dev/why-version-control-exists-the-pendrive-problem</guid><dc:creator><![CDATA[Nandani Yadav]]></dc:creator><pubDate>Sun, 11 Jan 2026 02:10:49 GMT</pubDate><content:encoded><![CDATA[<p><strong>The Pendrive Story Every Developer Has Lived:</strong> Before Git, before GitHub, before “commit” and “push” became everyday words — developers still wrote code.<br />But the way they managed it was… painful.</p>
<h2 id="heading-life-before-version-control-systems">Life Before Version Control Systems</h2>
<p>Imagine you’re a developer in a small team.</p>
<p>There’s <strong>no Git</strong>, no cloud repositories, no collaboration tools.</p>
<p>You still need to:</p>
<ul>
<li><p>Write code</p>
</li>
<li><p>Share it with teammates</p>
</li>
<li><p>Make changes without breaking others’ work</p>
</li>
<li><p>Recover old versions if something goes wrong</p>
</li>
</ul>
<h3 id="heading-the-pendrive-era">The Pendrive Era</h3>
<p><img src="https://rukminim2.flixcart.com/image/300/300/jumzc7k0/pendrive/pendrive/d/y/w/sandisk-2gb-pendrive-original-imaffpym9hgkufdq.jpeg" alt class="image--center mx-auto" /></p>
<p>The most common tool?</p>
<p><strong>A pendrive.</strong></p>
<p>Yes — a single pendrive that moved from:</p>
<ul>
<li>Developer A → Developer B → Team Lead → Tester</li>
</ul>
<p>Each person would:</p>
<ol>
<li><p>Copy the project folder</p>
</li>
<li><p>Make changes</p>
</li>
<li><p>Rename the folder</p>
</li>
<li><p>Pass it forward</p>
</li>
</ol>
<p>Folders looked like this:</p>
<pre><code class="lang-plaintext">project
project_final
project_final_v2
project_final_v3
project_latest
project_latest_final
project_latest_final_FIXED
</code></pre>
<h2 id="heading-emails-as-version-control">Emails as Version Control</h2>
<p>If pendrives weren’t used, then emails were.</p>
<ul>
<li><p>“Here is the latest <a target="_blank" href="http://code.zip">code.zip</a>”</p>
</li>
<li><p>“Ignore previous mail, use this one”</p>
</li>
<li><p>“Sorry, wrong attachment, sending again”</p>
</li>
</ul>
<p>Inbox version history:</p>
<pre><code class="lang-plaintext">code.zip
code_final.zip
code_final_really.zip
code_final_fixed.zip
</code></pre>
<p>No one knew:</p>
<ul>
<li><p>Which file was correct</p>
</li>
<li><p>Who made which change</p>
</li>
<li><p>What exactly changed  </p>
<p>  <strong>Problems Faced Before Version Control Systems</strong></p>
<p>  Before tools like Git existed, developers still wrote software—but managing changes was a daily struggle.<br />  There was no proper system to track code history, collaborate safely, or recover from mistakes.</p>
</li>
<li><h2 id="heading-1-accidental-code-overwriting">1. Accidental Code Overwriting</h2>
<p>  The biggest issue was <strong>overwriting someone else’s work</strong>.</p>
<p>  Scenario:</p>
<ul>
<li><p>Two developers work on the same project</p>
</li>
<li><p>Both make changes independently</p>
</li>
<li><p>One copies their version last</p>
</li>
</ul>
</li>
</ul>
<p>    💥 Result:<br />    The other person’s work is <strong>completely lost</strong>.</p>
<p>    There was no merge, no warning, no conflict resolution.</p>
<ul>
<li><h2 id="heading-2-no-record-of-changes-no-history">2. No Record of Changes (No History)</h2>
<p>  When something broke, teams asked:</p>
<ul>
<li><p>Who changed this?</p>
</li>
<li><p>When was this added?</p>
</li>
<li><p>Why was this removed?</p>
</li>
</ul>
</li>
</ul>
<p>    Most of the time, there was no answer.</p>
<p>    Files only showed the current state, not how they evolved.</p>
<p>    If a bug appeared, debugging meant guessing.</p>
<ul>
<li><h2 id="heading-3-impossible-or-unsafe-rollbacks">3. Impossible or Unsafe Rollbacks</h2>
<p>  If today’s code didn’t work:</p>
<ul>
<li><p>You couldn’t easily go back to yesterday’s version</p>
</li>
<li><p>You depended on someone having an old backup</p>
</li>
</ul>
</li>
</ul>
<p>    Many teams relied on:</p>
<ul>
<li><p>Folder copies</p>
</li>
<li><p>Email attachments</p>
</li>
<li><p>Old pendrive versions</p>
</li>
</ul>
<h2 id="heading-4-folder-chaos-final-finalv2-latest">4. Folder Chaos (final, final_v2, latest)</h2>
<p>    Without version control, developers used <strong>folder names as version history</strong>:</p>
<pre><code class="lang-plaintext">    project
    project_final
    project_final_v2
    project_latest
    project_latest_final
</code></pre>
<p>    Problems:</p>
<ul>
<li><p>No clear “correct” version</p>
</li>
<li><p>Easy to open the wrong folder</p>
</li>
<li><p>No idea what actually changed</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Inside Git: How It Works and the Role of the .git Folder]]></title><description><![CDATA[Most developers use Git every day, but very few understand what Git actually does behind the scenes.Once you understand Git internally, things like commits, branches, and resets stop feeling confusing.1️⃣ Git Is Not a File Tracker — It’s a Snapshot S...]]></description><link>https://git-for-biginers.hashnode.dev/inside-git-how-it-works-and-the-role-of-the-git-folder</link><guid isPermaLink="true">https://git-for-biginers.hashnode.dev/inside-git-how-it-works-and-the-role-of-the-git-folder</guid><dc:creator><![CDATA[Nandani Yadav]]></dc:creator><pubDate>Sat, 10 Jan 2026 17:46:01 GMT</pubDate><content:encoded><![CDATA[<p>Most developers use Git every day, but very few understand what Git actually does behind the scenes.<br />Once you understand Git internally, things like commits, branches, and resets stop feeling confusing.<br />1️⃣ Git Is Not a File Tracker — It’s a Snapshot System<br /><strong>Git tracks snapshots of content</strong></p>
<p>Every time you commit, Git takes a snapshot of the entire project (efficiently) and stores it permanently.</p>
<p>Unchanged files are reused, not duplicated — that’s why Git is fast.</p>
<ol>
<li><h2 id="heading-understanding-the-git-folder"><strong>Understanding the</strong> <code>.git</code> <strong>Folder</strong></h2>
<p> When you run: <strong>git init</strong><br /> then Git creates a hidden folder <strong>.git/</strong><br /> <strong>This folder is Git itself.</strong><br /> Your project becomes a Git repository <em>only because this folder exists</em>.</p>
<p> If you delete <code>.git</code> All Git history is gone.</p>
<p> The <code>.git</code> folder stores:</p>
<ul>
<li><p>All commits</p>
</li>
<li><p>All versions of files</p>
</li>
<li><p>Branch information</p>
</li>
<li><p>Tags</p>
</li>
<li><p>Configuration</p>
</li>
<li><p>Complete project history</p>
</li>
</ul>
</li>
</ol>
<p>    Your working files are just the current view of what Git manages internally</p>
]]></content:encoded></item><item><title><![CDATA[Git for Beginners: Basics and Essential Commands]]></title><description><![CDATA[What is Git?
Git is a Distributed Version Control System (DVCS).In simple wordsGit helps you track changes in your code, save versions, and work safely with other developers.Think of Git like a history manager for your code:
→You can go back to older...]]></description><link>https://git-for-biginers.hashnode.dev/what-is-git</link><guid isPermaLink="true">https://git-for-biginers.hashnode.dev/what-is-git</guid><dc:creator><![CDATA[Nandani Yadav]]></dc:creator><pubDate>Sat, 10 Jan 2026 14:53:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/tZnbakTUcTI/upload/229036ad665af3918185736389875b2f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-git"><strong>What is Git?</strong></h2>
<p>Git is a Distributed Version Control System (DVCS).<br />In simple words<br />Git helps you <strong>track changes in your code</strong>, <strong>save versions</strong>, and <strong>work safely with other developers</strong>.<br />Think of Git like a <strong>history manager for your code</strong>:</p>
<p>→You can go back to older versions</p>
<p>→You can experiment without fear</p>
<p>→You can collaborate with a team easily</p>
<p>Example:<br />If your project breaks today, Git allows you to go back to yesterday’s working version</p>
<p><img src="https://i2tutorials.com/wp-content/media/2023/02/work2.png" alt /></p>
<h2 id="heading-why-is-git-used"><strong>Why is Git Used?</strong></h2>
<p>Git is used because it solves common developer problems:</p>
<h3 id="heading-1-track-code-changes">1. Track Code Changes</h3>
<p>Every change is recorded. You know:</p>
<ul>
<li><p>What changed</p>
</li>
<li><p>Who changed it</p>
</li>
<li><p>When it changed</p>
</li>
</ul>
<h3 id="heading-2-work-without-fear">2. Work Without Fear</h3>
<p>You can experiment freely. If something goes wrong, just revert.</p>
<h3 id="heading-3-team-collaboration">3. Team Collaboration</h3>
<p>Multiple developers can work on the same project without overwriting each other’s work.</p>
<h3 id="heading-4-industry-standard">4. Industry Standard</h3>
<p>Almost every company uses Git with platforms like:</p>
<ul>
<li><p>GitHub</p>
</li>
<li><p>GitLab</p>
</li>
<li><p>Bitbucket</p>
<h2 id="heading-git-basics-and-core-terminologies"><strong>Git Basics and Core Terminologies:</strong></h2>
</li>
<li><p>Let’s understand the most important Git terms.</p>
<h3 id="heading-repository-repo">📁 Repository (Repo)</h3>
<p>  A <strong>repository</strong> is a folder that Git tracks.</p>
<p>  It contains:</p>
<ul>
<li><p>Your project files</p>
</li>
<li><p>Git history</p>
</li>
<li><p>All commits and branches<br />  🌿 <strong>Branch</strong></p>
<p>  A <strong>branch</strong> is a separate line of development.</p>
<p>  Why branches?</p>
<ul>
<li><p>To add features safely</p>
</li>
<li><p>To fix bugs without affecting the main code</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>        → The default branch is usually called:</p>
<ul>
<li><p><code>main</code> or <code>master</code></p>
</li>
<li><h3 id="heading-head">🎯 HEAD</h3>
</li>
</ul>
<p>        <strong>HEAD</strong> points to:</p>
<ul>
<li><p>Your current branch</p>
</li>
<li><p>Your latest commit</p>
</li>
</ul>
<p>        →If you move to another branch, HEAD moves with you.</p>
<ul>
<li><h2 id="heading-common-git-commands"><strong>Common Git Commands</strong></h2>
</li>
<li><p><strong>git init</strong><br />  Initialize a new Git repository in your project folder.</p>
</li>
<li><p><strong>git status</strong><br />  Check File Status<br />  Shows:</p>
<ul>
<li><p>Modified files</p>
</li>
<li><p>Staged files</p>
</li>
<li><p>Untracked files</p>
</li>
</ul>
</li>
<li><p><strong>git add &lt;file name&gt;</strong><br />  Add Files to Staging Area</p>
<p>  or</p>
</li>
<li><p><strong>git add .</strong></p>
<p>  Add all files</p>
</li>
<li><p><strong>git commit -m "Initial commit"</strong><br />  Commit Changes- Write clear messages. Explain what you changed.</p>
</li>
<li><p><strong>git push</strong></p>
<p>  <code>git push</code> is used to send your local commits to a remote repository<br />  (like GitHub, GitLab, or Bitbucket).</p>
<p>  Until you push, your code exists only on your laptop.</p>
</li>
<li><p><strong>git log</strong></p>
<p>  View commit history</p>
<p>  Shows:</p>
<ul>
<li><p>Commit IDs</p>
</li>
<li><p>Author</p>
</li>
<li><p>Date</p>
</li>
<li><p>Commit messages</p>
</li>
<li><p><img src="https://i0.wp.com/build5nines.com/wp-content/uploads/2018/01/simplified-git-flow.png?resize=1024%2C354&amp;ssl=1" alt /></p>
</li>
</ul>
</li>
</ul>
]]></content:encoded></item></channel></rss>