<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Levis Chiri</title>
    <description>The latest articles on Forem by Levis Chiri (@chirikamau).</description>
    <link>https://forem.com/chirikamau</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1072385%2Fc771c001-9c67-4bdd-aa87-42d25c2b2e15.jpeg</url>
      <title>Forem: Levis Chiri</title>
      <link>https://forem.com/chirikamau</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/chirikamau"/>
    <language>en</language>
    <item>
      <title>🧠 Raspberry Pi Headless Setup Guide (SSH, VNC, Essentials)</title>
      <dc:creator>Levis Chiri</dc:creator>
      <pubDate>Wed, 12 Mar 2025 12:13:56 +0000</pubDate>
      <link>https://forem.com/chirikamau/raspberry-pi-headless-setup-guide-ssh-vnc-essentials-47mh</link>
      <guid>https://forem.com/chirikamau/raspberry-pi-headless-setup-guide-ssh-vnc-essentials-47mh</guid>
      <description>&lt;p&gt;This guide walks you through setting up a Raspberry Pi (headlessly) using &lt;strong&gt;Raspberry Pi Imager&lt;/strong&gt;, enabling &lt;strong&gt;SSH&lt;/strong&gt;, configuring &lt;strong&gt;Wi-Fi&lt;/strong&gt;, setting up &lt;strong&gt;VNC Viewer&lt;/strong&gt;, fixing common issues, and using essential commands.&lt;/p&gt;




&lt;h2&gt;
  
  
  📥 1. Installing Raspberry Pi OS Using Raspberry Pi Imager
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ Step 1: Download Raspberry Pi Imager
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Download from the &lt;a href="https://www.raspberrypi.com/software/" rel="noopener noreferrer"&gt;official site&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Install and launch it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✅ Step 2: Flash the OS to the MicroSD Card
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Insert a &lt;strong&gt;microSD card (≥16GB)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Open Raspberry Pi Imager and select:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhs8v89x5kq6ye7x89uq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhs8v89x5kq6ye7x89uq.png" alt="Select OS and Storage" width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose OS → &lt;strong&gt;Raspberry Pi OS (Recommended)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Choose Storage → Select your SD card&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚙️ Configure Wi-Fi and SSH (Optional but recommended)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click the ⚙️ (Settings) icon:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1g5501s3qpuxjsypcpx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1g5501s3qpuxjsypcpx.png" alt="Settings" width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hostname
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xtb9olmazxq5bh4kol5.png" alt="Set Hostname" width="800" height="342"&gt;
&lt;/li&gt;
&lt;li&gt;Wi-Fi SSID &amp;amp; Password
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqaph86wxsfkapj6jmcb.png" alt="WiFi Config" width="800" height="303"&gt;
&lt;/li&gt;
&lt;li&gt;Enable SSH
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdoydng51i45e8mwjlrv.png" alt="Enable SSH" width="800" height="422"&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Save &amp;amp; click &lt;strong&gt;Write&lt;/strong&gt; to flash.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  🛠️ Step 3: Manual Headless SSH &amp;amp; Wi-Fi Setup (If Not Done Above)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the boot partition on the SD card.&lt;/li&gt;
&lt;li&gt;Create empty &lt;code&gt;ssh&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch&lt;/span&gt; /boot/ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create &lt;code&gt;wpa_supplicant.conf&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano /boot/wpa_supplicant.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;country&lt;/span&gt;=&lt;span class="n"&gt;US&lt;/span&gt;
&lt;span class="n"&gt;ctrl_interface&lt;/span&gt;=&lt;span class="n"&gt;DIR&lt;/span&gt;=/&lt;span class="n"&gt;var&lt;/span&gt;/&lt;span class="n"&gt;run&lt;/span&gt;/&lt;span class="n"&gt;wpa_supplicant&lt;/span&gt; &lt;span class="n"&gt;GROUP&lt;/span&gt;=&lt;span class="n"&gt;netdev&lt;/span&gt;
&lt;span class="n"&gt;update_config&lt;/span&gt;=&lt;span class="m"&gt;1&lt;/span&gt;

&lt;span class="n"&gt;network&lt;/span&gt;={
  &lt;span class="n"&gt;ssid&lt;/span&gt;=&lt;span class="s2"&gt;"Your_WiFi_Name"&lt;/span&gt;
  &lt;span class="n"&gt;psk&lt;/span&gt;=&lt;span class="s2"&gt;"Your_WiFi_Password"&lt;/span&gt;
  &lt;span class="n"&gt;key_mgmt&lt;/span&gt;=&lt;span class="n"&gt;WPA&lt;/span&gt;-&lt;span class="n"&gt;PSK&lt;/span&gt;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Save &amp;amp; eject. Insert into Pi and power on.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💻 2. Connect to Raspberry Pi via SSH
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔍 Find the IP Address
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;With monitor:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Headless:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ping raspberrypi.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔐 SSH from PC
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh pi@&amp;lt;Raspberry_Pi_IP&amp;gt;
&lt;span class="c"&gt;# Example:&lt;/span&gt;
ssh pi@192.168.1.100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Default user: &lt;code&gt;pi&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Password: &lt;code&gt;raspberry&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔄 3. Update the Raspberry Pi
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖥️ 4. Enable &amp;amp; Configure VNC
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Enable VNC Server:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;raspi-config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Interfacing Options → VNC → Enable&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnhrae892cxhocpharjae.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnhrae892cxhocpharjae.png" alt="Enable VNC" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exit &amp;amp; reboot:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Install VNC Server (if needed)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;realvnc-vnc-server realvnc-vnc-viewer &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vncserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔗 5. Connect via VNC Viewer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Download: &lt;a href="https://www.realvnc.com/en/connect/download/viewer/" rel="noopener noreferrer"&gt;VNC Viewer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Enter your Raspberry Pi IP (e.g. &lt;code&gt;192.168.1.100&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11wnydgkg3w4vwwzovih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11wnydgkg3w4vwwzovih.png" alt="VNC Viewer" width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login:

&lt;ul&gt;
&lt;li&gt;Username: &lt;code&gt;pi&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Password: &lt;code&gt;raspberry&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧯 6. Fix: “Cannot currently show the desktop”
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fix 1: Set a Virtual Display
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /boot/config.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uncomment or add:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=82
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Fix 2: Restart VNC
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart vncserver-x11-serviced
&lt;span class="c"&gt;# or&lt;/span&gt;
vncserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Fix 3: Reinstall Desktop
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--reinstall&lt;/span&gt; raspberrypi-ui-mods
&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🛠️ 7. Essential Raspberry Pi Commands
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔄 System Update
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔍 System Info
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt;               &lt;span class="c"&gt;# Kernel&lt;/span&gt;
vcgencmd measure_temp  &lt;span class="c"&gt;# CPU Temp&lt;/span&gt;
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;                  &lt;span class="c"&gt;# Disk&lt;/span&gt;
free &lt;span class="nt"&gt;-m&lt;/span&gt;                &lt;span class="c"&gt;# RAM&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ⚙️ Services
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status vncserver-x11-serviced
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart vncserver-x11-serviced
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🌐 Networking
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip a
ping google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  📁 File Ops
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls
cd&lt;/span&gt; /path/to/folder
&lt;span class="nb"&gt;mkdir &lt;/span&gt;new_folder
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; folder_name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔁 Reboot/Shutdown
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;span class="nb"&gt;sudo &lt;/span&gt;shutdown &lt;span class="nt"&gt;-h&lt;/span&gt; now
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌐 8. Set Static IP (Optional)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/dhcpcd.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;interface&lt;/span&gt; &lt;span class="n"&gt;wlan0&lt;/span&gt;
&lt;span class="n"&gt;static&lt;/span&gt; &lt;span class="n"&gt;ip_address&lt;/span&gt;=&lt;span class="m"&gt;192&lt;/span&gt;.&lt;span class="m"&gt;168&lt;/span&gt;.&lt;span class="m"&gt;1&lt;/span&gt;.&lt;span class="m"&gt;150&lt;/span&gt;/&lt;span class="m"&gt;24&lt;/span&gt;
&lt;span class="n"&gt;static&lt;/span&gt; &lt;span class="n"&gt;routers&lt;/span&gt;=&lt;span class="m"&gt;192&lt;/span&gt;.&lt;span class="m"&gt;168&lt;/span&gt;.&lt;span class="m"&gt;1&lt;/span&gt;.&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;static&lt;/span&gt; &lt;span class="n"&gt;domain_name_servers&lt;/span&gt;=&lt;span class="m"&gt;8&lt;/span&gt;.&lt;span class="m"&gt;8&lt;/span&gt;.&lt;span class="m"&gt;8&lt;/span&gt;.&lt;span class="m"&gt;8&lt;/span&gt; &lt;span class="m"&gt;8&lt;/span&gt;.&lt;span class="m"&gt;8&lt;/span&gt;.&lt;span class="m"&gt;4&lt;/span&gt;.&lt;span class="m"&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and reboot.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 9. Install Useful Software
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python3 python3-pip git nodejs npm &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚡ 10. Enable GPIO for Projects
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;raspi-config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Interfacing Options → Enable GPIO&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install libraries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python3-gpiozero python3-rpi.gpio &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;RPi.GPIO&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;GPIO&lt;/span&gt;
&lt;span class="n"&gt;GPIO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setmode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GPIO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BCM&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GPIO Ready!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌍 11. Optional: Web Server Setup (Apache)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;apache2 &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status apache2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Access from browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://&amp;lt;Raspberry_Pi_IP&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;project files, or embed code repos.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>raspberrypi</category>
      <category>linux</category>
      <category>micropython</category>
    </item>
    <item>
      <title>🐧Essential Linux Commands Every Developer Should Know</title>
      <dc:creator>Levis Chiri</dc:creator>
      <pubDate>Wed, 12 Mar 2025 11:49:32 +0000</pubDate>
      <link>https://forem.com/chirikamau/essential-linux-commands-every-developer-should-know-4ai1</link>
      <guid>https://forem.com/chirikamau/essential-linux-commands-every-developer-should-know-4ai1</guid>
      <description>&lt;p&gt;Linux is one of the most powerful and widely used operating systems in the world. It forms the backbone of everything from smartphones and smart devices to web servers and supercomputers.&lt;/p&gt;

&lt;p&gt;Popular distributions like &lt;strong&gt;Ubuntu&lt;/strong&gt;, &lt;strong&gt;Raspbian&lt;/strong&gt;, &lt;strong&gt;Kali Linux&lt;/strong&gt;, and &lt;strong&gt;Debian&lt;/strong&gt; make Linux accessible to everyone—from beginners to advanced users.&lt;/p&gt;

&lt;p&gt;What makes Linux especially appealing is its &lt;strong&gt;flexibility&lt;/strong&gt;, &lt;strong&gt;speed&lt;/strong&gt;, and &lt;strong&gt;open-source&lt;/strong&gt; nature. Most importantly, knowing how to use the &lt;strong&gt;Linux command line&lt;/strong&gt; unlocks a whole new level of control and efficiency.&lt;/p&gt;




&lt;h2&gt;
  
  
  ➤ 1. File and Directory Management
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt; → List files and directories.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls -l&lt;/code&gt; → List files with details (permissions, owner, size, date).
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls -a&lt;/code&gt; → Show hidden files (starting with .).
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pwd&lt;/code&gt; → Show the current directory path.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd &amp;lt;directory&amp;gt;&lt;/code&gt; → Change to a specific directory.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd ..&lt;/code&gt; → Move up one directory level.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd /&lt;/code&gt; → Go to the root directory.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd ~&lt;/code&gt; → Go to the home directory.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mkdir &amp;lt;directory&amp;gt;&lt;/code&gt; → Create a new directory.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rmdir &amp;lt;directory&amp;gt;&lt;/code&gt; → Remove an empty directory.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rm &amp;lt;file&amp;gt;&lt;/code&gt; → Delete a file.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rm -r &amp;lt;directory&amp;gt;&lt;/code&gt; → Delete a directory and its contents.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cp &amp;lt;source&amp;gt; &amp;lt;destination&amp;gt;&lt;/code&gt; → Copy a file or directory.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mv &amp;lt;source&amp;gt; &amp;lt;destination&amp;gt;&lt;/code&gt; → Move or rename a file/directory.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ➤ 2. Viewing and Editing Files
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cat &amp;lt;file&amp;gt;&lt;/code&gt; → Display file contents.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;less &amp;lt;file&amp;gt;&lt;/code&gt; → View a file with scrolling (q to exit).
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;head &amp;lt;file&amp;gt;&lt;/code&gt; → Show the first 10 lines of a file.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tail &amp;lt;file&amp;gt;&lt;/code&gt; → Show the last 10 lines of a file.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tail -f &amp;lt;file&amp;gt;&lt;/code&gt; → Continuously display the last lines of a file (useful for logs).
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nano &amp;lt;file&amp;gt;&lt;/code&gt; → Open file in the Nano text editor.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vim &amp;lt;file&amp;gt;&lt;/code&gt; → Open file in the Vim text editor.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ➤ 3. File Permissions and Ownership
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ls -l&lt;/code&gt; → Show file permissions.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;chmod 755 &amp;lt;file&amp;gt;&lt;/code&gt; → Set file permissions (755 = owner can edit, others can only read/execute).
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;chmod u+x &amp;lt;file&amp;gt;&lt;/code&gt; → Give execute permission to the owner.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;chown user:group &amp;lt;file&amp;gt;&lt;/code&gt; → Change file owner and group.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ➤ 4. Process Management
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ps aux&lt;/code&gt; → Show all running processes.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;top&lt;/code&gt; → Display system resource usage (press q to exit).
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;htop&lt;/code&gt; → Advanced process viewer (needs installation).
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kill &amp;lt;PID&amp;gt;&lt;/code&gt; → Stop a process by its Process ID.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kill -9 &amp;lt;PID&amp;gt;&lt;/code&gt; → Forcefully stop a process.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pkill &amp;lt;name&amp;gt;&lt;/code&gt; → Stop a process by name.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ➤ 5. Networking Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ifconfig&lt;/code&gt; → Show network interfaces.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ip a&lt;/code&gt; → Show IP addresses (alternative to ifconfig).
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ping &amp;lt;host&amp;gt;&lt;/code&gt; → Test network connectivity to a host.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nslookup &amp;lt;domain&amp;gt;&lt;/code&gt; → Get DNS info of a domain.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wget &amp;lt;URL&amp;gt;&lt;/code&gt; → Download a file from the internet.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;curl &amp;lt;URL&amp;gt;&lt;/code&gt; → Fetch data from a URL (useful for APIs).
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ➤ 6. Disk Usage and Monitoring
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;df -h&lt;/code&gt; → Show available disk space.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;du -sh &amp;lt;directory&amp;gt;&lt;/code&gt; → Show size of a directory.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;free -h&lt;/code&gt; → Display memory (RAM) usage.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ➤ 7. Searching for Files and Text
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;find /path -name "filename"&lt;/code&gt; → Search for a file by name.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grep "text" &amp;lt;file&amp;gt;&lt;/code&gt; → Search for text inside a file.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grep -r "text" &amp;lt;directory&amp;gt;&lt;/code&gt; → Search for text in all files in a directory.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;locate &amp;lt;filename&amp;gt;&lt;/code&gt; → Find a file by name (needs &lt;code&gt;updatedb&lt;/code&gt; first).
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ➤ 8. Archiving and Compression
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;tar -cvf archive.tar &amp;lt;files&amp;gt;&lt;/code&gt; → Create a tar archive.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tar -xvf archive.tar&lt;/code&gt; → Extract a tar archive.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tar -czvf archive.tar.gz &amp;lt;files&amp;gt;&lt;/code&gt; → Create a compressed tar archive.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tar -xzvf archive.tar.gz&lt;/code&gt; → Extract a compressed tar archive.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;zip -r archive.zip &amp;lt;files&amp;gt;&lt;/code&gt; → Create a zip archive.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;unzip archive.zip&lt;/code&gt; → Extract a zip archive.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ➤ 9. System Logs and Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dmesg&lt;/code&gt; → Show system boot logs.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;journalctl -xe&lt;/code&gt; → View system logs.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;uptime&lt;/code&gt; → Show system uptime.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;uname -a&lt;/code&gt; → Show system and kernel details.
&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>raspberrypi</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Using git and git hub</title>
      <dc:creator>Levis Chiri</dc:creator>
      <pubDate>Wed, 12 Mar 2025 11:27:33 +0000</pubDate>
      <link>https://forem.com/chirikamau/using-git-and-git-hub-2bk7</link>
      <guid>https://forem.com/chirikamau/using-git-and-git-hub-2bk7</guid>
      <description>&lt;h2&gt;
  
  
  Installing and Using Git
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🖥️ Windows
&lt;/h3&gt;

&lt;p&gt;Go to &lt;a href="https://git-scm.com" rel="noopener noreferrer"&gt;git-scm.com&lt;/a&gt; and download Git for your operating system.&lt;br&gt;&lt;br&gt;
Run the installer and follow the setup wizard (default settings are fine).&lt;/p&gt;
&lt;h3&gt;
  
  
  🍎 macOS
&lt;/h3&gt;

&lt;p&gt;Install Git using Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🐧 Linux (Debian/Ubuntu)
&lt;/h3&gt;

&lt;p&gt;Update and install Git using APT:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ✅ Verify Git Installation
&lt;/h3&gt;

&lt;p&gt;Check if Git is installed by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setting Up Git
&lt;/h2&gt;

&lt;p&gt;Configure your username and email:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"your.email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check your configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set your default branch name to &lt;code&gt;main&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; init.defaultBranch main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  1. Initializing a Repository
&lt;/h2&gt;

&lt;p&gt;Before using Git, you need to initialize or clone a repository.&lt;/p&gt;

&lt;p&gt;🔹 Create a new Git repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹 Clone an existing repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;repo_URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  💾 2. Committing
&lt;/h2&gt;

&lt;p&gt;🔍 Check current status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📥 Clone code from GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;repo_URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹 Stage all changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📝 Commit with a message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"your message here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹 Push changes to remote:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔗 Add remote repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin &amp;lt;repo_URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⬆️ Push to remote for the first time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔍 Verify remote URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;❌ Remove a remote:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote remove origin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. Branching and Merging
&lt;/h2&gt;

&lt;p&gt;🔍 List all branches:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹Create a new branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔀 Switch to a branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹Create and switch to new branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔗 Merge a branch into current:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git merge &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🗑️ Delete a merged branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-d&lt;/span&gt; &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹🗑️ Force delete a branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-D&lt;/span&gt; &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📦 4. Stashing Changes
&lt;/h2&gt;

&lt;p&gt;🧳 Save current changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📚 View stash list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹Apply and remove the latest stash:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash pop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔁 Apply the latest stash (keep it):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🗑️ Delete the most recent stash:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash drop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧹 Clear all stashes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash clear
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔄 5. Pushing and Pulling from GitHub
&lt;/h2&gt;

&lt;p&gt;🔗 Add remote origin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin &amp;lt;repo_URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⬆️ Push a branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔁 Push and set upstream:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⬇️ Pull changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git pull origin &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📥 Fetch changes without merging:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📡 Fetch all remotes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧼 6. Undoing Changes
&lt;/h2&gt;

&lt;p&gt;🚫 Unstage a file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔙 Undo last commit but keep changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹Undo last commit and changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↩️ Revert a specific commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git revert &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧽 Discard local changes to a file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;--&lt;/span&gt; &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📜 7. Viewing History and Logs
&lt;/h2&gt;

&lt;p&gt;📖 View commit log:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧱 Condensed graph view:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt; &lt;span class="nt"&gt;--graph&lt;/span&gt; &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧩 Show changes in last 2 commits:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nt"&gt;-2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📚 View reference log:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reflog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔖 8. Working with Tags
&lt;/h2&gt;

&lt;p&gt;List all tags:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a lightweight tag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &amp;lt;tag-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📝 Create an annotated tag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &lt;span class="nt"&gt;-a&lt;/span&gt; &amp;lt;tag-name&amp;gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Message"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹 Push all tags to GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="nt"&gt;--tags&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔄 Checkout a tag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &amp;lt;tag-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🤝 9. Collaborating In GitHub
&lt;/h2&gt;

&lt;p&gt;🔍 View remote repositories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;➕ Add a new remote:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin &amp;lt;repo_URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔄 Rebase with latest changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git pull &lt;span class="nt"&gt;--rebase&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⬆️ Push current branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🍴 10. Fork and Pull Request
&lt;/h2&gt;

&lt;p&gt;🍽️ Clone a forked repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;forked_repo_URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹Create a feature branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; &amp;lt;feature-branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⬆️ Push your branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &amp;lt;feature-branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📬 Open a Pull Request on GitHub.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 11. Submodules
&lt;/h2&gt;

&lt;p&gt;🧱 Add a submodule:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git submodule add &amp;lt;repo_URL&amp;gt; &amp;lt;path&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔄 Initialize and update submodules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git submodule update &lt;span class="nt"&gt;--init&lt;/span&gt; &lt;span class="nt"&gt;--recursive&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🛠️ 12. Fixing Mistakes
&lt;/h2&gt;

&lt;p&gt;🍒 Apply a specific commit from another branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &amp;lt;commit_hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✍️ Interactively edit last 3 commits:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git rebase &lt;span class="nt"&gt;-i&lt;/span&gt; HEAD~3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💥 Reset local branch to match remote:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; origin/main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🗑️ 13. Deleting a Repository (Caution!)
&lt;/h2&gt;

&lt;p&gt;⚠️ Deletes the Git history in current folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; .git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setting Up SSH for GitHub
&lt;/h2&gt;

&lt;p&gt;Generate an SSH key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"your.email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the SSH agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;ssh-agent &lt;span class="nt"&gt;-s&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the key to SSH agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-add ~/.ssh/id_ed25519
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the SSH key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ssh/id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Go to GitHub -&amp;gt; Settings -&amp;gt; SSH and GPG keys -&amp;gt; Add a new key -&amp;gt; Paste the copied key.&lt;/p&gt;

&lt;p&gt;Test the connection:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-T&lt;/span&gt; git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set Git to use SSH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote set-url origin git@github.com:username/repository.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






</description>
    </item>
  </channel>
</rss>
