My team is transitioning from SVN to Git, and the journey proves to be very difficult. A lot of them feel either confused or time-wasting to use Git. This got me thinking: I have read a lot of Git tutorials, but most of them are focused on how each Git command is for, and what Git workflow you should use. There are seldom tutorials who are written from an average software engineer’s point of view: an average software engineer is someone who works on code, and compares his code with the code in the repository (the central reposity) to make sure that the code he has been working on hasn’t been changed by others, and when he feels ready, he pushes his changes to the repository so others can use his code. What are the ways an average software engineer should conduct his daily work? And what are the pros and cons for each way?
This series of tutorials try to answer these questions.
The first tutorial is, of course, about the differences between SVN and Git.
Coming from SVN, the biggest difference one needs to be aware is that with Git has a “local” repository, and commit is to commit to the local repository.
Compared with SVN, a software engineer needs to go through more steps to get one’s code into the central repository. This alone is confusing for newbies. To make things worse, in Git, you have to juggle among branches, and you have many ways to do the same thing, which adds more confusion (more on this in later tutorials).
Some commands have the same format in SVN and Git, look out for them:
- git commit is to commit to local repository, git push pushes a branch in the local repository to the remote repository.
- git checkout is to checkout a branch from the local repository.