I started using version control systems many years ago with Subversion (SVN). Later, I tried other systems such as Bazaar, and finally, like many projects and developers, I moved to Git.

Now I can say that I have been using Git for several years, mostly as a practical tool to manage my code and keep track of changes. In most cases, especially at work, I use it for projects where I am the only developer, or I access repositories created by other people mainly for testing, not as an active developer.

Recently, however, I have been involved in a project with other people, and I realized that my understanding of Git is often superficial. I know how to use the main commands, but I do not always fully understand what is happening behind them.

For this reason, I want to go back to Git with a different approach: not just using it, but trying to understand its logic more deeply.

After re-reading the manual, Pro Git, I noticed something interesting. If I compare my old notes with my new notes, they reflect a different aim. My first notes were mainly about hooks and configuration, with only a superficial focus on conflict management.

In the past, I had already thought about the best way to manage branches after reading the famous post A Successful Git Branching Model. At the time, I understood the general idea and adopted part of it, but I did not explore it deeply.

Now I want to go more in depth into branching strategies, starting from Martin Fowler’s article on branching patterns.

For now, my first goals are:

  • Maintain cleaner repositories
  • Use private or temporary branches in a better way

For example, especially in my private projects, I sometimes:

  • Repeat the same commit message instead of amending the previous commit
  • Create unnecessary commits instead of updating the last one

From now on, I want to use the --amend command more consciously:

git commit --amend

For unpushed branches, I also want to:

  • Use rebase instead of merge (when possible)
  • Keep a cleaner and more linear history

This post is just a starting point. As I encounter important cases or discover concepts that deserve more attention, I will write new posts to clarify them and improve my workflow step by step.