<?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: Tyler N</title>
    <description>The latest articles on DEV Community by Tyler N (@thetylern).</description>
    <link>https://dev.to/thetylern</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%2F3956829%2F404e8470-cc9d-4142-b434-9fec036fc8cd.png</url>
      <title>DEV Community: Tyler N</title>
      <link>https://dev.to/thetylern</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thetylern"/>
    <language>en</language>
    <item>
      <title>Why Terminal-Based Development Is Best For Me</title>
      <dc:creator>Tyler N</dc:creator>
      <pubDate>Thu, 11 Jun 2026 01:49:12 +0000</pubDate>
      <link>https://dev.to/thetylern/why-terminal-based-development-is-best-for-me-4h3g</link>
      <guid>https://dev.to/thetylern/why-terminal-based-development-is-best-for-me-4h3g</guid>
      <description>&lt;p&gt;One day, I was working on a Python project. I had my 'reliable and speedy' Windows and my 'fast and optimized' VS Code. But, the only issue with this, is that those adjectives, are false. To have three browser tabs and one VS Code window open at the same time was like a death wish to my 16GB of RAM. And, as you may have guessed, this wasn't just 'one day', but rather, every single time I wanted to do any sort of development in the Microsoft ecosystem (minus the browser, I viewed Microsoft Edge as terrible and Chrome as just the only replacement, despite its lag).&lt;/p&gt;

&lt;p&gt;At that rate, imagine how slow it was for me to code. I was running the newest Windows, the newest VS Code, didn't have any unnecessary background apps, and followed every single 'secret' step to 'optimize' and 'speed up' Windows and its associated applications. I was doing everything right, but it still was too slow. Oftentimes, a large portion of my 16GB of RAM, was used simply by thousands of background services that added up to use a large amount of memory.&lt;/p&gt;

&lt;p&gt;So, approximately three months ago, on March 10th, 2026, I decided to experiment with dual-booting a Linux distribution on my main computer. I shrunk my Windows partition with the Disk Management application and proceeded to allocate around 300GB of space on my 1TB SSD (solid-state drive) for Debian 13.3, (Trixie), a Linux distribution notable for its stability, large software repository, extensive architecture support, strict free and open source software (FOSS) philosophy, and upgrade reliability. And, so far, I have only used 62GB of space on the 300GB partition, meaning that I could have been very comfortable with 100GB. This data usage is including large media files.&lt;/p&gt;

&lt;p&gt;I originally thought I would only use Linux as a side project or hobby, and that I would often boot to Windows, too. But, two facts made me never boot Windows again with the intent to use it for purposes other than data collection. Those facts are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I have never experienced lagginess on Linux that I deemed to not have a reasonable cause.&lt;/li&gt;
&lt;li&gt;It was not as hard to use as I thought it would be.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To elaborate more on fact two, at least to me, the complexity of Linux is decided by your Desktop Environment (DE). On Windows, you are locked down to one Desktop Environment (DE) that can be very laggy, but is extremely simple to use for basic tasks. On the other hand, Linux generally allows users to choose their own Desktop Environment (DE), with the exception being certain immutable distributions and Operating Systems like Android OS and Chrome OS (yes, they rely on Linux). On Linux, users can choose themselves the correct balance between accessibility, usability, and speed for their specific circumstances by making an educated choice on which Desktop Environment (DE) to utilize.&lt;/p&gt;

&lt;p&gt;I originally tried my best to find the 'perfect', light-weight IDE for Linux. I tried &lt;a href="https://www.sublimetext.com/" rel="noopener noreferrer"&gt;Sublime Text&lt;/a&gt;, and I was fine with it for a while. But, I eventually decided to strip out the IDE, and instead, simply code in the terminal.&lt;/p&gt;

&lt;p&gt;When using the terminal to code via a code or text editor (like micro or nano), the tools you write code with generally do not significantly contribute to the resource usage of your computer, with the exception of certain advanced code analysis tools to prevent security, speed, and other issues or errors, along with certain other applications. For example, if you can have 5 browser tabs open without any lag, adding on something like micro will not make your experience any more laggy.&lt;/p&gt;

&lt;p&gt;With my new development workflow, I am able to code—minus the lag. I can have 10 different terminal tabs open, and it's not even as hard on my laptop as resting a feather on its lid, (figuratively). It's 2 cents compared to the resource utilization on the rest of the computer.&lt;/p&gt;

&lt;p&gt;And, my choice of using Linux also greatly contributed to reduced lag when using my computer, both in general and in development workflows, —in addition to utilizing terminal based code editing. Because of Linux's open-source nature, every single line of code is scrutinized by the public, and every issue is eventually caught and handled (if you are going to comment about copy fail and similar issues, it was in fact, eventually fixed). On the contrary, Windows' proprietary nature allows for extreme telemetry and non-optimization, despite their claims of speed. Windows is even thinking about utilizing more system resources—instead of actually optimizing—to make the Windows experience faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  My General Workflow for Making Python Projects on Linux While Utilizing the Terminal
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;I generally use the micro code editor or the nano text editor, both terminal-based applications.&lt;/li&gt;
&lt;li&gt;I may have the Firefox FOSS (free and open-source) web browser open to a documentation page or a forum of some sorts. Web browsers like &lt;a href="https://www.google.com/chrome/" rel="noopener noreferrer"&gt;Google Chrome&lt;/a&gt;, &lt;a href="https://www.apple.com/safari/" rel="noopener noreferrer"&gt;Apple Safari&lt;/a&gt;, and &lt;a href="https://www.microsoft.com/en-us/edge/?ep=0&amp;amp;form=MA1403&amp;amp;es=325&amp;amp;cs=1301686474" rel="noopener noreferrer"&gt;Microsoft Edge&lt;/a&gt; are not FOSS (free and open-source).&lt;/li&gt;
&lt;li&gt;Now that I have started my Python project &lt;a href="https://github.com/tyleruploads/devto-followers2md/tree/main" rel="noopener noreferrer"&gt;devto-followers2md&lt;/a&gt;, I have recently started checking my code with &lt;a href="https://docs.astral.sh/ruff/" rel="noopener noreferrer"&gt;Ruff&lt;/a&gt;, a fast Rust-based Python linter and code formatter. I also started using &lt;a href="https://github.com/microsoft/pyright" rel="noopener noreferrer"&gt;pyright&lt;/a&gt;, (yes, I know it is very ironic, it is made by Microsoft), and will be working on making sure the project aligns with its standards too.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;(If you are wondering more about my Python project, I have an awesome article about it coming out this week, most likely on Sunday afternoon or evening, here on DEV.to.&lt;/strong&gt; When it comes out, I will insert the link for it, here).&lt;/p&gt;

&lt;h2&gt;
  
  
  The Final Anecdote (for now)
&lt;/h2&gt;

&lt;p&gt;Due to Windows' confusing file storage locations (including Microsoft OneDrive), I was forced to boot Windows in order to recover my coding folder that was not visible when I decrypted my Windows partition with my &lt;a href="https://support.microsoft.com/en-us/windows/bitlocker-drive-encryption-76b92ac9-1040-48d6-9f5f-d14b3c5fa178" rel="noopener noreferrer"&gt;BitLocker&lt;/a&gt; recovery key. I tried to copy it to my Google Drive account, but it was transferring at a rate close to &lt;strong&gt;ZERO&lt;/strong&gt; megabits per second, so that was a no go. I tried to transfer to a flash drive that generally works just fine, and it said my 16GB or so of data would take 16 hours, then 20 hours, then just weeks to copy. That, also, was not going to work. It turns out that the Antivirus system, &lt;a href="https://www.bitdefender.com/en-us/" rel="noopener noreferrer"&gt;BitDefender&lt;/a&gt;, completely crashed, on every level. Because Windows does not allow the administrator to force kill the antivirus process or its associated programs, the antivirus GUI dashboard and control center hung and never closed due to the crash of its antivirus process. Possibly, the antivirus software was attempting to scan files when it was not able to, causing this issue. I eventually was able to transfer it (very slowly), with the terminal!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;While I switched from Windows to Linux and greatly benefited from it, I acknowledge that it is not the right move for everyone. People may be locked into it because of their jobs, or they may have a certain circumstance making Linux not the best for their specific workflow. And, of course, I acknowledge macOS, too. Since macOS is built on a UNIX foundation (like Linux), it is much closer to Linux than Windows is.&lt;/p&gt;

&lt;p&gt;Windows users who want to experience Linux can utilize &lt;a href="https://learn.microsoft.com/en-us/windows/wsl/install" rel="noopener noreferrer"&gt;WSL&lt;/a&gt;, which lets Windows users utilize a Linux environment on their Windows computer. (It is made by Microsoft, so if you are wondering, no, it is not unofficial or dangerous). WSL is free to use, but is not completely FOSS (free and open-source).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is your favorite coding workflow, and, what OS do you use? Do you agree with what I said?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'll share my OS:&lt;/p&gt;

&lt;p&gt;OS: Debian GNU/Linux 13 (trixie) x86_64&lt;br&gt;
Kernel: Linux 6.12.90+deb13.1-amd64&lt;br&gt;
DE: KDE Plasma 6.3.6&lt;br&gt;
WM: KWin (Wayland)&lt;br&gt;
Shell: bash 5.2.37&lt;br&gt;
Display: 1920x1080 @ 60 Hz&lt;br&gt;
CPU: 12th Gen Intel(R) Core(TM) i7-1255U (12)&lt;br&gt;
GPU: Intel Iris Xe Graphics [Integrated]&lt;br&gt;
Memory: 16GB&lt;/p&gt;

</description>
      <category>linux</category>
      <category>productivity</category>
      <category>discuss</category>
      <category>python</category>
    </item>
    <item>
      <title>How I used Inkscape to make Assets for GitHub and DEV.to</title>
      <dc:creator>Tyler N</dc:creator>
      <pubDate>Sun, 31 May 2026 21:00:48 +0000</pubDate>
      <link>https://dev.to/thetylern/how-i-used-inkscape-to-make-assets-for-github-and-devto-bck</link>
      <guid>https://dev.to/thetylern/how-i-used-inkscape-to-make-assets-for-github-and-devto-bck</guid>
      <description>&lt;p&gt;Developers often ignore their profile picture by keeping default geometric placeholders or blank banners because design tools can be intimidating. Up until recently, my GitHub profile was simply a green, Pacman-like geometric pattern, which doesn't show anything about me, or a spec of my creativity. I didn't know how to use any design software, except basic Photopea. With almost no design knowledge, I wanted to make myself an awesome profile picture, without spending money on proprietary software subscriptions, so I turned to Inkscape, (a free, open-source vector editor).&lt;/p&gt;

&lt;p&gt;Standard raster images (like PNGs and JPGs) are just grids of colored pixels that blur when scaled. Vector files (like SVG) are built on mathematical coordinates and nodes. In fact, SVG vector files are really just XML data. Because I chose to design my profile picture with vector graphics, it is able to stay completely crisp, no matter how I resize it. The pixelation issues that occur when you enlarge standard images simply does not exist in vector graphics.&lt;/p&gt;

&lt;p&gt;The way I got a basic understanding of Inkscape without watching long videos or signing up for paid courses was by applying a different philosophy of learning that I find is also highly effective when learning programming languages or concepts.This philosophy of learning emphasizes applying concepts as you learn them, rather than learning concepts and only applying them once you completely understand them. This approach is even more powerful in Inkscape because you see visual results directly on your canvas. Unlike coding, where your code must be correct before you can run it (generally), design lets you learn simply by doing.&lt;/p&gt;

&lt;p&gt;The way I applied this philosophy of learning to Inkscape was by following along with a simple and short (~15 minutes) tutorial, and using tools the second the instructor explained them. I frequently paused to experiment more with the tools, which worked very well, except for the Bézier tool and it's paths, which I still sadly can not use well (I tried to make a smiley face with it, and I made an upside down &lt;code&gt;^&lt;/code&gt; symbol, which is why I made it with the calligraphy tool). When there was something I truly did not know how to do (like wrapping text around an ellipse), I simply searched for it online and applied it immediately.&lt;/p&gt;

&lt;p&gt;To design the profile picture, I centered a large ellipse onto a 500 by 500 pixel canvas with a smooth blue to pink linear gradient, leaving the corners transparent. From there, I built the features: 3D boxes for eyes, ovals for ears, the hair, and my initials for the nose. I even layered a duplicated calligraphy path to make depth for the smile. Finally, I exported the finished asset as a PNG file to preserve transparency.&lt;/p&gt;

&lt;p&gt;I then updated my GitHub and DEV.to profile picture to be my newly designed profile picture. My &lt;a href="https://tyleruploads.github.io/thetylern/" rel="noopener noreferrer"&gt;custom Hugo blog&lt;/a&gt; even updated its main page automatically once I reran my GitHub actions workflow, since it pulls my profile picture dynamically from GitHub.&lt;/p&gt;

&lt;p&gt;I also use Inkscape to make cover images for my DEV.to articles, like this one with a canvas size of 1000 by 420 pixels, for a clean, professional look. Because the original asset is a vector, I can shrink it into the corner to be a small logo or blow it up to be the center of attention of an article cover, and it always stays crisp.&lt;/p&gt;

&lt;p&gt;Learning how to use an open-source creative tool is just like learning how to use a CLI utility. You don't need to master the entire tool; you only need to learn the parts you are actually going to use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do your profile pictures look like?&lt;/strong&gt; Did you make them yourself, or are they still placeholders? If you are still using a placeholder, are you planning on making one now? If you are confused by Inkscape, I'm sure someone in the comments could help you.&lt;/p&gt;

&lt;p&gt;Also, if anyone has any experience using Inkscape or other graphic design software, I would love to hear your thoughts!&lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>discuss</category>
      <category>programming</category>
    </item>
    <item>
      <title>Git for GitHub: How to use simple Git commands to manage a GitHub repository</title>
      <dc:creator>Tyler N</dc:creator>
      <pubDate>Thu, 28 May 2026 21:18:19 +0000</pubDate>
      <link>https://dev.to/thetylern/git-for-github-how-to-use-simple-git-commands-to-manage-a-github-repository-435g</link>
      <guid>https://dev.to/thetylern/git-for-github-how-to-use-simple-git-commands-to-manage-a-github-repository-435g</guid>
      <description>&lt;p&gt;Recently, I was working on creating a website on a cloud-based IDE (CodeHS). One night, I was editing, and then when I was done, I simply turned off my monitor and disabled my mouse and keyboard. Then, the next day at school, I continued to work on the website, and made significant changes. When I got home, I made more significant changes, but then realized something very important. What I realized is that when I continued to work on the project at home, the cloud-based IDE hadn't refreshed to the new code, and overwrote the work I did at school when I saved my new work.&lt;/p&gt;

&lt;p&gt;So, what is the purpose of me telling you this? Is it to say that you should always close your code editor when you're done working, or some other trick to prevent this from happening? No, it definitely is not.&lt;/p&gt;

&lt;p&gt;After the initial panic, I realized that the cloud-based IDE had a history section, which has a detailed log of every change that happened to every file. I then looked back at my old copy, copied the changes, and put them back into my new code.&lt;/p&gt;

&lt;p&gt;Now, imagine you aren't using a cloud-based IDE, and your just editing a file on your computer, in an IDE, or simply your terminal. To clarify, Git is not cloud-based, it is local, (sitting on your computer), that connects to the cloud (GitHub). What happens when something breaks? For some environments, this could be catastrophic, and make you loose a lot of work. When you make an update to a file, the last state and all the states before it are gone.&lt;/p&gt;

&lt;p&gt;But, this isn't the only thing that can happen. When you use a version control system (VCS), like Git, you can always go back to your previous commits, (snapshots of your code).&lt;/p&gt;

&lt;p&gt;The work I almost lost wasn't very important; that work didn't effect anyone, except myself. Imagine what would happen if I was working on something more important, or even just working on something for a job.&lt;/p&gt;

&lt;p&gt;Before learning how to manage your project, it helps to understand what Git actually is. Git is overwhelmingly the most popular version control system (VCS), and is completely free to use.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"By far, the most widely used modern version control system in the world today is Git. Git is a mature, actively maintained open source project originally developed in 2005 by Linus Torvalds, the famous creator of the Linux operating system kernel." &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source: &lt;a href="https://www.atlassian.com/git/tutorials/what-is-git" rel="noopener noreferrer"&gt;Atlassian&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this guide, you will learn how to use the Git version control system (VCS) to manage a GitHub repository by initializing a project, linking it your GitHub repository, and using it to manage your GitHub repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Section 1: Installing and Setting Up Git
&lt;/h2&gt;

&lt;p&gt;In this section, we will navigate to our terminal and install Git.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Opening your terminal
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Windows: Press the &lt;code&gt;Windows Key&lt;/code&gt;, type Powershell, and hit enter. &lt;/li&gt;
&lt;li&gt;macOS: Press &lt;code&gt;Cmd + Space&lt;/code&gt;, type Terminal, and hit enter. &lt;/li&gt;
&lt;li&gt;Linux: Press &lt;code&gt;Ctrl + Alt + T&lt;/code&gt; to open your default shell.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Installing Git
&lt;/h3&gt;

&lt;p&gt;In your terminal, run the following command to determine if you have Git installed&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;ul&gt;
&lt;li&gt;If a version number appears, you are ready to go to step 3. &lt;/li&gt;
&lt;li&gt;If the command is not recognized, follow the steps below to install Git.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Windows Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To install Git on Windows, you can do so in one of the following ways.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run the following command to install Git with Winget: &lt;code&gt;winget install --id Git.Git -e --source winget&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run one of the standalone installers found at &lt;a href="https://git-scm.com/install/windows" rel="noopener noreferrer"&gt;Git-scm&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;macOS Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To install Git on macOS, you can do so by installing Git with homebrew.&lt;/p&gt;

&lt;p&gt;If you do not have homebrew, install homebrew with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&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;Once you have homebrew, run:&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;span class="sb"&gt;`&lt;/span&gt; to &lt;span class="nb"&gt;install &lt;/span&gt;Git.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Linux Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To install Git on Linux, use your distributions package manager.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debian/Ubuntu: &lt;code&gt;sudo apt-get install git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fedora: &lt;code&gt;sudo dnf install git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Arch: &lt;code&gt;sudo pacman -S git&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Setting up Git (Identity Configuration)
&lt;/h3&gt;

&lt;p&gt;The next step to using git is to set variables that let Git know who you are. These are permanently attached to every commit you do, which allows platforms like GitHub to attach it to your profile card.&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="c"&gt;# Set your display name (can be your real name, your GitHub username, or many other things)&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;

&lt;span class="c"&gt;# Set your email (MUST match your GitHub email)&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;h2&gt;
  
  
  Section 2: Tracking Version History
&lt;/h2&gt;

&lt;p&gt;In this section, we will initialize a local git project and learn how to use basic git commands to track the files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Initializing local Git Project
&lt;/h3&gt;

&lt;p&gt;In this step, we will initialize our local Git project. First, navigate to the directory you would like to store your project, and run the following command.&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;span class="nt"&gt;-b&lt;/span&gt; main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;-b main&lt;/code&gt; ensures the default branch is named &lt;code&gt;main&lt;/code&gt;, matching GitHub's default layout.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Stage and Commit files
&lt;/h3&gt;

&lt;p&gt;In this step, we will stage our files, (which means to tell Git to start tracking the files), and to commit our files (making a snapshot of the file on our local machine.)&lt;/p&gt;

&lt;p&gt;To stage the files, type the following command:&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;The &lt;code&gt;.&lt;/code&gt; symbol is our current directory, which tells Git to stage all the files in your current location.&lt;/p&gt;

&lt;p&gt;Next, we will commit these files and add a commit message. It is standard practice to use the imperative mood (e.g. "Add css rule to fix whitespacing", not "Added css rule to preserve whitespacing") for commit messages, as this follows the convention used by Git itself.&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;"Initial commit"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-m&lt;/code&gt; flag stands for &lt;code&gt;message&lt;/code&gt;, which is why we put our commit message after it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Section 3: Making GitHub repository and linking with local project
&lt;/h2&gt;

&lt;p&gt;In this section, we will make a GitHub repository and link our local project with it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Initializing Repository
&lt;/h3&gt;

&lt;p&gt;In this step, we will make a GitHub repository, which is where we publish our project. If you do not have a GitHub account, please make one.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;the GitHub homepage&lt;/a&gt; and sign in if you are not already.&lt;/li&gt;
&lt;li&gt;Click the green &lt;code&gt;New&lt;/code&gt; button located at the top right of the &lt;code&gt;Top Repositories&lt;/code&gt; menu that is on the left side of your screen. If you are unable to find this button, click on &lt;a href="https://github.com/new" rel="noopener noreferrer"&gt;this link&lt;/a&gt; instead, which will take you to the same location.&lt;/li&gt;
&lt;li&gt;Set a repository name, and make sure that all of the &lt;code&gt;Add ...&lt;/code&gt; boxes are unchecked.&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Create Repository&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Remember the URL for your repository&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: Linking local project to repository
&lt;/h3&gt;

&lt;p&gt;In this step, we will link our local project to the GitHub repository we just made.&lt;/p&gt;

&lt;p&gt;Navigate to your local project, and run the following command, while ensuring to replace &lt;code&gt;&amp;lt;REPOSITORY LINK&amp;gt;&lt;/code&gt; with the link you remembered in 3.1.5&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;REPOSITORY LINK&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: &lt;code&gt;Push&lt;/code&gt;ing
&lt;/h3&gt;

&lt;p&gt;In this step, we will push to our repository on GitHub. This means that your local project and all the changes you made, along with your commit messages, will be put on GitHub.&lt;/p&gt;

&lt;p&gt;Navigate to your local project, and run the following command&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 main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The flag &lt;code&gt;-u&lt;/code&gt; stands for &lt;code&gt;upstream&lt;/code&gt;, which links your local branch to the remote branch so that in the future, Git knows exactly where to send your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Section 4: Wrapping up and Next Steps
&lt;/h2&gt;

&lt;p&gt;You have successfully initialized a local project, tracked your changes, and pushed your code securely to the cloud on GitHub.&lt;/p&gt;

&lt;p&gt;Now that your local project is linked to your remote GitHub repository, your workflow becomes way more simpler.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to do in the future
&lt;/h3&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%2Fmermaid.ink%2Fimg%2Fpako%3AeNqNU2tr2zAU_SvifmkHiRvHr9kLgcUO66CtSx6MdR5FiTRb1JKMLJd2Wf77ZJu23mih-qKre-85uucgHWAvCYUIcoWrAm2STCCz6mbXJy7kHpe3seRVo6lCPzJIr9D3dLtCcXp5vd0sVxn87DHtIkzRvWZSoM3iJfvZwL5JdcdEjpKuQ6rH2U7NZzXHZTk_3Yoa31OC4gKLnNYfZmd9YXZmmv65YGGo1hrnLRVWFA9ZrhWtTO49NLGh6aQhg5E1-3-gdTfOWuCqLqR-hWggDo3Hc_QH5UwjTAiyTDzQvhiU95Jzs405OrEs68Rk476RCvJE-ex8XMqG3C7FPVNScCp0a_7XK7Q5X6L4It0m7zA-MZAvTJ83O7R6VWcqSiboG0YNpooHKqqmLkyYfIKReTWMQKRVQ0fAqeK4PcKhBWWgC8ppBpEJCVZ3GWTiaDAVFjdS8ieYkk1eQPQLl7U5NRXBmiYMGxNeWswkVMWyERoi3-4oIDrAA0SOG1iO67kfQ29ih55jio8QeYEVTOypH0zdqevYvnscwe_uzonlB64XTMIwnHq-bTvhCChpfbns_0H3HY5_ATQm8ZA%3Ftype%3Dpng" 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%2Fmermaid.ink%2Fimg%2Fpako%3AeNqNU2tr2zAU_SvifmkHiRvHr9kLgcUO66CtSx6MdR5FiTRb1JKMLJd2Wf77ZJu23mih-qKre-85uucgHWAvCYUIcoWrAm2STCCz6mbXJy7kHpe3seRVo6lCPzJIr9D3dLtCcXp5vd0sVxn87DHtIkzRvWZSoM3iJfvZwL5JdcdEjpKuQ6rH2U7NZzXHZTk_3Yoa31OC4gKLnNYfZmd9YXZmmv65YGGo1hrnLRVWFA9ZrhWtTO49NLGh6aQhg5E1-3-gdTfOWuCqLqR-hWggDo3Hc_QH5UwjTAiyTDzQvhiU95Jzs405OrEs68Rk476RCvJE-ex8XMqG3C7FPVNScCp0a_7XK7Q5X6L4It0m7zA-MZAvTJ83O7R6VWcqSiboG0YNpooHKqqmLkyYfIKReTWMQKRVQ0fAqeK4PcKhBWWgC8ppBpEJCVZ3GWTiaDAVFjdS8ieYkk1eQPQLl7U5NRXBmiYMGxNeWswkVMWyERoi3-4oIDrAA0SOG1iO67kfQ29ih55jio8QeYEVTOypH0zdqevYvnscwe_uzonlB64XTMIwnHq-bTvhCChpfbns_0H3HY5_ATQm8ZA%3Ftype%3Dpng" alt="Graph of workflow" width="277" height="650"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the future, your workflow isn't as complicated as it just may have been. You just need to remember 4 simple commands for the most part.&lt;/p&gt;

&lt;p&gt;First, you need to know the &lt;code&gt;git status&lt;/code&gt; command. This command shows you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The branch you are on&lt;/li&gt;
&lt;li&gt;How many commits above or behind you are compared to the GitHub&lt;/li&gt;
&lt;li&gt;Changes that have not been staged to commit&lt;/li&gt;
&lt;li&gt;Untracked files It is recommended to look at the output of this command before you start working.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you want to stage files (tell Git to track them), you simply run the command &lt;code&gt;git add &amp;lt;FILES, or . for every file in the directory&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When you want to commit these files (to save a snapshot of them to your local machine), you simply run the command &lt;code&gt;git commit -m "COMMIT MESSAGE"&lt;/code&gt; Keep in mind that at this point, the new changes have not left your computer.&lt;/p&gt;

&lt;p&gt;Then, when you want to put them onto GitHub, you just run the command &lt;code&gt;git push&lt;/code&gt; If you want to be extra sure that the &lt;code&gt;git push -u origin main&lt;/code&gt; was remembered, you can always just run &lt;code&gt;git push origin main&lt;/code&gt; if you want to be sure.&lt;/p&gt;

&lt;p&gt;And, that's your workflow now. See how simple it is?&lt;/p&gt;

&lt;h3&gt;
  
  
  Important Note: .gitignore
&lt;/h3&gt;

&lt;p&gt;It is standard practice to add a &lt;code&gt;.gitignore&lt;/code&gt; file in your root directory. The purpose of the &lt;code&gt;.gitignore&lt;/code&gt; file is to tell Git what files to not track, keeping it from the public (GitHub). You simply type specific rules into the file with one line for each. Here is quick tutorial.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can use &lt;code&gt;#&lt;/code&gt; signs to indicate that everything after it on the line is a comment&lt;/li&gt;
&lt;li&gt;If you type a literal name (i.e. &lt;code&gt;secret.txt&lt;/code&gt;), that specific file will be ignored&lt;/li&gt;
&lt;li&gt;Patterns ending with a &lt;code&gt;/&lt;/code&gt; (i.e. &lt;code&gt;private/&lt;/code&gt;) match only directories and their entire contents&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*&lt;/code&gt; Matches any amount of characters. For example, &lt;code&gt;*.txt&lt;/code&gt; matches all files ending in &lt;code&gt;.txt&lt;/code&gt;, and &lt;code&gt;log*&lt;/code&gt; matches all files starting in &lt;code&gt;log&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;**&lt;/code&gt; matches directories recursively. For example, &lt;code&gt;**logs&lt;/code&gt; matches any directory named &lt;code&gt;logs&lt;/code&gt; in the project&lt;/li&gt;
&lt;li&gt;Lines starting with &lt;code&gt;!&lt;/code&gt; re-include a file that was excluded by a previous rule&lt;/li&gt;
&lt;li&gt;Using a &lt;code&gt;/&lt;/code&gt; anchors the pattern to where the &lt;code&gt;.gitignore&lt;/code&gt; file resides, NOT the root of the computer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Section 5: Ending Notes
&lt;/h2&gt;

&lt;p&gt;In this tutorial, you learned how to use Git to manage a local project and to link that local project with GitHub.&lt;/p&gt;

&lt;p&gt;Now that you see how you do it, I think it's important that I explain a bit more about why we do it.&lt;/p&gt;

&lt;p&gt;Imagine you are working on an Automated Market-Making (AMM) System, which is a system that place buy and sell orders for many stocks simultaneously, that pocket small price differences without human intervention, and you accidentally make an error in the code, which is costing the company money.&lt;/p&gt;

&lt;p&gt;If there was no version control system (VCS), the company could experience significant downtime and financial loss. With the usage of a version control system (VCS) like Git, the company can easily revert back to slightly older working code and restart the program, saving the company a lot of money.&lt;/p&gt;

&lt;p&gt;Keep in mind that with Git and GitHub, there are many features that allow code to be collaborated on by many people at the same time, and also provides features to make sure code can be checked by other collaborators before it is approved.&lt;/p&gt;

&lt;p&gt;This is why version control systems (VCS) are so important in the development workforce.&lt;/p&gt;

&lt;p&gt;Even if you do not have a coding job and are just coding on your own, you can still loose significant progress when you do not use version control systems (VCS), (like we just discussed).&lt;/p&gt;

&lt;p&gt;Also, I want to put out that while I may not write the best commit statements, I am working to make better ones. A good standard for writing commits that I found is the Conventional Commits standard. I will not describe the standard here, but I recommend to read &lt;a href="https://www.conventionalcommits.org/en/v1.0.0/#summary" rel="noopener noreferrer"&gt;this summary&lt;/a&gt; to learn more about it.&lt;/p&gt;

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