<?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>DEV Community: Victoria</title>
    <description>The latest articles on DEV Community by Victoria (@victoria_fa8).</description>
    <link>https://dev.to/victoria_fa8</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4071792%2F1e462e10-12ac-45bd-bb66-98b4a892b1b8.png</url>
      <title>DEV Community: Victoria</title>
      <link>https://dev.to/victoria_fa8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/victoria_fa8"/>
    <language>en</language>
    <item>
      <title>My First GitHub Project: From a Local Folder to GitHub Using Git and SSH</title>
      <dc:creator>Victoria</dc:creator>
      <pubDate>Tue, 25 Aug 2026 07:00:20 +0000</pubDate>
      <link>https://dev.to/victoria_fa8/my-first-github-project-from-a-local-folder-to-github-using-git-and-ssh-116a</link>
      <guid>https://dev.to/victoria_fa8/my-first-github-project-from-a-local-folder-to-github-using-git-and-ssh-116a</guid>
      <description>&lt;p&gt;Before this week, "Git" and "GitHub" were basically the same word to me. Turns out they're not even close. Git is the thing that runs quietly on your own machine, tracking every change you make. GitHub is just where you &lt;em&gt;choose&lt;/em&gt; to back that history up online. You can use Git your whole life and never touch GitHub. I didn't know that.&lt;/p&gt;

&lt;p&gt;Here's the moment it clicked: I had a messy &lt;code&gt;.py&lt;/code&gt; file. Wednesday it worked. By Thursday, after "fixing" some visualizations, it didn't. Without Git, that's just a dead project. With Git, every one of those working versions is a &lt;strong&gt;commit&lt;/strong&gt;, a saved checkpoint you can always go back to. That's it. That's the whole magic trick.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turning a folder into a repo
&lt;/h2&gt;

&lt;p&gt;I had a local folder full of scripts and no version history at all. Two commands fixed that:&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
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Initial project setup"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;init&lt;/code&gt; tells Git "start watching this folder." &lt;code&gt;add&lt;/code&gt; stages what I want tracked. &lt;code&gt;commit&lt;/code&gt; locks it in as a checkpoint. Small, boring, and weirdly satisfying.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where SSH actually fits in
&lt;/h2&gt;

&lt;p&gt;This part confused me the most going in. SSH isn't about Git itself. It's about &lt;em&gt;proving to GitHub it's really you&lt;/em&gt; pushing code, without typing a password every time. You generate two keys: a private one that never leaves your laptop, and a public one you hand 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;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;I pressed Enter through the file location prompt (default is fine for a first key) and set a passphrase. Then I added the key to my SSH agent so I wouldn't get pestered for it constantly:&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;
ssh-add ~/.ssh/id_ed25519
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copied the &lt;em&gt;public&lt;/em&gt; key (&lt;code&gt;id_ed25519.pub&lt;/code&gt;, never the private one) into GitHub under Settings &amp;gt; SSH and GPG keys &amp;gt; New SSH key. Then tested it:&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;Got a "Hi username! You've successfully authenticated" message and felt an unreasonable amount of pride about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting local to remote
&lt;/h2&gt;

&lt;p&gt;Last step: link the local repo to an actual GitHub repository (created empty, no README, to avoid conflicts) and push.&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 git@github.com:yourusername/your-repo.git
git branch &lt;span class="nt"&gt;-M&lt;/span&gt; main
git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Refreshed GitHub, and there it was, my messy little script, now with a real history, sitting online.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually stuck with me
&lt;/h2&gt;

&lt;p&gt;The biggest shift wasn't the commands, it was the mental model: your computer owns the history, GitHub just stores a copy of it. Push sends your commits up. Pull brings changes down. Everything else is details.&lt;/p&gt;

&lt;p&gt;If you're starting this same week, my honest advice: don't rush the SSH part just to "get to the good stuff." It's the part that stops making sense retroactively once you understand why it exists as a way to authenticate, not a hoop to jump through.&lt;/p&gt;

&lt;p&gt;Tell me your experience with Git and GitHub.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>github</category>
    </item>
  </channel>
</rss>
