DEV Community

Munem Prionto
Munem Prionto

Posted on

Using Git as Your Personal To-Do List

Keeping up with daily tasks can feel like a never-ending juggling act. Between managing personal goals, school assignments, work projects, and even gym routines, it’s easy to get overwhelmed by all the moving pieces. Sure, there are tons of apps and software out there to help streamline the process but let’s be honest, most of them are cluttered and ironically, end up adding to the overwhelm.

But what if there was a simpler way to keep everything organized while also sharpening your developer skills? If you’re a developer, you likely already know Git as the go-to tool for version control. Here’s a fresh twist: why not use Git as your personal to-do list? Imagine a repository where each branch represents a different area of your life—personal, uni, work, and gym. With each new task or goal, you’ll commit it to the appropriate branch, tracking your progress without the noise of a bloated app.

This setup not only helps you stay on top of your goals but also gives you hands-on practice with core Git topics. From creating branches to making commits and merging changes, this tutorial introduces essential commands in a way that’s easy to pick up. Many new developers can feel a bit intimidated by Git’s learning curve, but by using it daily to manage your life, you’ll build confidence and learn Git concepts in a practical, engaging way.

What Are Git and GitHub?

Before we dive in, let’s clear up what Git and GitHub are. Think of Git as a digital time machine for your files. It’s a version control system that helps you track changes in code or files, so you can go back to earlier versions, keep multiple versions (branches) at once, and track your progress over time. Developers use Git to manage their code as they work, making sure they have a record of changes and can collaborate without overwriting each other’s work.

GitHub is a popular online platform that hosts Git repositories in the cloud, making it easier to share, collaborate, and back up your code. You can think of it as a social network for developers, where people showcase projects, work together on open-source code, and contribute to others' work. Using GitHub with Git is like using an online hard drive specifically designed for code—perfect for syncing, sharing, and working with others.

So, in this guide, we’ll focus on Git, but feel free to use GitHub if you want to store and share your life-planning “to-do list” in the cloud!

Understanding Git Status, Staging, and Committing

Before you start adding tasks to your Git to-do list, it’s important to understand how to check the status of your repository, and how to stage and commit your changes.

1. Checking status with git status

git status
Enter fullscreen mode Exit fullscreen mode

This command gives you a snapshot of what's happening in your repository. Here’s what it shows:

  • Untracked Files: These are new files that Git isn't tracking yet.
  • Changes Not Staged for Commit: These are files you've modified but haven't yet marked for the next commit.
  • Changes to be Committed: These are files you've staged, meaning they’re ready to be included in the next commit.

2. Staging Changes

Once you know which files you want to include in your next commit, it’s time to stage them. Staging is like telling Git which changes to get ready for the next snapshot. You can stage specific files with:

# Stage changes made to tasks.txt
git add tasks.txt
Enter fullscreen mode Exit fullscreen mode

Or, if you want to stage everything in your current directory, you can use:

# Stage all changes in the current directory
git add .
Enter fullscreen mode Exit fullscreen mode

3. Committing Changes

After staging your changes, the next step is to commit them. To commit your changes, use the git commit command along with a message that describes what you’ve done. Here we're using commit messages to track individual tasks.

git commit -m "fixed that bug that’s been haunting my dreams"
Enter fullscreen mode Exit fullscreen mode

The -m flag allows you to add a message.

 

Step 1: Initializing a Git Repository

First things first, create a Git repository to hold your tasks. Think of it as a digital “notebook” for your to-do list. Let’s call this repository life-planner—but feel free to get creative with the name!
Open your terminal: This is where you’ll type commands to interact with Git. If you’re on Windows, use Command Prompt or PowerShell. On Mac or Linux, use Terminal.

#This command makes a folder named life-planner.
mkdir life_planner
Enter fullscreen mode Exit fullscreen mode

This command makes a folder named life-planner.

#Navigate into your new folder so you can start working inside it:
cd life_planner
Enter fullscreen mode Exit fullscreen mode

The cd command (short for "change directory") switches you to the life-planner folder.

#Initialize the Git repository inside this folder. This sets up Git to start tracking changes
git init
Enter fullscreen mode Exit fullscreen mode

You’re all set to start using Git to organize your to-do list!
 

Step 2: Set Up Your Task Categories with Branches

Imagine each branch as a different part of your life. Think of each branch as a distinct category of tasks you want to manage. Each branch will contain tasks specific to that category.

First, create a master branch called life, from which all your other branches will branch out:

# Create and switch to 'life' branch
git checkout -b life 

# Create a file to track tasks
touch tasks.txt 

# Check if 'tasks.txt' is untracked
git status 

# Stage 'tasks.txt'
git add . 

# Save your changes to the 'life' branch with a commit message
git commit -m 'life init' 
Enter fullscreen mode Exit fullscreen mode

Create branches for each category: Each time, go back to life to branch out from the base:

# Go to 'life' branch
git checkout life

# Create 'uni' branch
git checkout -b uni

# Return to 'life'
git checkout life

# Create 'work' branch
git checkout -b work

Enter fullscreen mode Exit fullscreen mode

 

Step 3: Add Tasks as Commits

Whenever you complete a task, follow these steps to switch to the relevant branch, add your task to tasks.txt, and commit it.

Switch to the right branch for your task. If the task is related to work, switch to the work branch:

# Switch to the right branch for your task
git checkout work

# Add your task to the file by appending a new task to tasks.txt
echo "Made code look like I know what I'm doing" >> tasks.txt

# Stage your changes to prepare them for committing
git add tasks.txt

# Commit your task with a descriptive message
git commit -m "Made code look like I know what I'm doing"

Enter fullscreen mode Exit fullscreen mode

By executing these commands, you log your task in Git with a clear message. This process allows you to keep track of your tasks across different branches effectively.

Repeat this process whenever you complete a task in any of your categories. Your tasks.txt file will serve as a comprehensive log of all your completed tasks.

Step 4: View Your Task History with git log

To see a list of all tasks completed in each category, use git log on each branch. Here’s how:

git log --oneline
Enter fullscreen mode Exit fullscreen mode

you might see output like this:

e84d3b2 Made code look like I know what I am doing
b5c2a1f Updated UI spacing by 1px
c4b1e3a Optimized code by deleting unnecessary print statements
Enter fullscreen mode Exit fullscreen mode

This gives you a quick overview of the tasks you’ve completed.

Step 5: Summarize Your Day by Merging Branches

To get an overview of everything you’ve accomplished in one place, merge all your branches into main at the end of each day. This helps you keep track of what you’ve done across all categories.

#Switch to the main branch:
git checkout life

# Merge the personal branch
git merge personal  

# Merge the uni branch
git merge uni       

# Merge the work branch
git merge work      

# Merge the gym branch
git merge gym       

Enter fullscreen mode Exit fullscreen mode

Now, your "life" branch will contain a complete log of your tasks for the day!

After merging, you can view your daily summary in main with:

git log --oneline
Enter fullscreen mode Exit fullscreen mode

you might see output like this:

e84d3b2 Organized desk for 30 mins, worked for 5
b5c2a1f Procrastinated productively for uni work
c4b1e3a Survived cardio without collapsing
Enter fullscreen mode Exit fullscreen mode

Each commit represents a task you completed, giving you a clear view of your day’s productivity.

  

I know this may not be the most practical way to manage your to-do list, but it’s a fantastic exercise for anyone looking to get comfortable with using Git. By treating tasks as commits and organizing them into branches, you’re engaging with core Git commands in a unique, hands-on way. The purpose of this blog was to show that Git is not only powerful but also versatile enough to be used creatively. If you learned something here or gained more confidence with Git, then I’ve succeeded in my goal!

If you have any suggestions or ideas on how to improve this approach, please feel free to share. You can even take it further by syncing your to-do list to the cloud with GitHub, allowing for an accessible, trackable task manager that’s uniquely yours. Happy coding, and happy planning!

Top comments (11)

Collapse
 
mrsrv7 profile image
MrSrv7

Finally, a to-do list where I can blame my procrastinations on (merge) conflicts 😅

On a serious note, this is brilliant approach for those (like me) who prefer minimal setup over fancy, and unnecessarily expensive productivity apps.

Collapse
 
darcher profile image
Dylan Archer

Actually laughed out loud. Haha, well placed kind sir.

Collapse
 
ademagic profile image
Miko

This sounds like it's more valuable as a way to teach you to think in Git than it is to manage a task list :D Props to you, I would have never thought of this crossover

Collapse
 
munemprionto profile image
Munem Prionto

That was the goal haha, thanks!

Collapse
 
anscarlett profile image
anscarlett

Interesting idea. Might be useful to use git worktree to allow you to have all branches checked out simultaneously.

Collapse
 
otumianempire profile image
Michael Otu

Finding another use for git

Collapse
 
xuhayr profile image
Ahmed Jabir Zuhayr

Really creative, will definitely send it to anyone while explaining git to them, deserves a bookmark.

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard • Edited

But what if there was a simpler way to keep everything organized while also sharpening your developer skills?

Ok, so git has its pros, but I won't ever use git and simple in the same sentance, especially when we are talking about documentation - syncing a bunch of markdown files, like your TODOs.

Let's consider what will get in the way one way of the other of you getting things done if you choose to use git for documentation like that

Any decent sync service git
will auto-fetch manual and you'll forget it
will auto-pull manual and you'll forget it
will auto-push manual and you'll forget it
will auto-commit manual and will requires you to have a useless commit message
handle conflicts gracefully on a file per file basis everything is blocked if one single file has a merge conflicts
centralized as it should be decentralized which you don't need and bring complexity
will commit only your markdown files will commit .DS_Store and todos.md.swap, and oh shit, how I do remove that now that is has been commited ?
will auto-merge most of the time will bugs you to merge things manually even when the solution is obvious for documentation
has an history on a file per file basis has a global history which makes no sense for documentation
has an UX so light you forget about it most of the time has a CLI famous for its terrible UX
easy to install on Android/iOS good luck
makes it trivial to revert to a previous version of a file good luck with stackoverflow
doesn't rewrite history why the F# does git allow that ?
doesn't confuse you with branches because it works on a file per file basis have "branches" that aren't even branches like the biological analogy suggests
Collapse
 
davidswalkabout profile image
DavidP

Interesting, but I'd argue that the primary purpose of a todo list is to remember what needs to be done, not what has just been done.
A followup post could show how to do the former.

Collapse
 
harsh_official_204eefbe08 profile image
Harsh Official

Nice bro

Collapse
 
kaiwizardly profile image
Kai Wizardly

What I understood from this is it will help me keep track of what I have done.

But How are you keeping track of what you need to do ??