git source control with a local repository (no server)

Even when working alone or on simple projects, I like to have the benefits of source control – history, branching, and backup.

Usually I keep the repo on one drive (that is backed-up) and the project itself on another.

Git is the solution I decided upon at this point because it has become a open source industry standard. Here are the common steps that need to be taken to use git in this scenario.


Create a folder that will serve as the repository, let’s call it repo. (In my mind, this is the “server”, the destination where the files and changes are tracked, and where you can get the files in various states from.)

Enter this folder and connect it to git:

git init 

Then you need to add a file to the repo.

git add
git commit -m "init"

After this, the “master” branch exists and is checked-out in the repo. Now you need to unlock the master branch.

git branch live
git checkout live

(These two steps are missing in a lot of online guides for some reason. It’s a specific thing for git, and kind of strange. Only now, you will be able to start pushing to the master branch. The live branch you can merge from time to time, whenever you have a release ready for example.)

The repository is ready.

Working folder

Now clone the repository into a (non-existing) working folder:

git clone path_to_repo working_folder 

Go into the newly created working folder and switch it to the master branch (it’s currently on the live one):

git checkout master 

Now you are ready to start using git operations – commit, push and the rest of the operations will be reflected to the repo folder when you merge.

git merge master


Common operations

 git add [-n] . 
 git commit -m "whacha_done" 
 git push origin master 


Undo add

git reset file

Undo commit

 git reset HEAD~1 

Revert all changes

 git reset --hard HEAD~1 

(More info on Stack Overflow)

Repo moving

The repo folder needs to be copied entirely. Then, change the working folder to the new one:

git remote rm origin
git remote add origin path_to_new_remote

Branch info

 git branch -vv 

Ignore files

 touch .gitignore 

(Common ignore configurations created by the GitHub team)

Use https

 git config --global url."https://".insteadOf git:// 



Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.