Git and SVN are the most widely used version control systems. As long as the project development will use this kind of system.
Git is different from SVN
GIT is not just a version control system, it is also a content management system (CMS), work management system, etc.
Differences between Git and SVN:
1. GIT is distributed, SVN is not: This is the core difference between GIT and other non-distributed version control systems such as SVN, CVS, etc.
2. After Git is downloaded, you can see all the logs locally without having to use the Internet, which is very convenient for learning, but SVN needs the Internet
GIT stores content as metadata, while SVN stores content as files: all resource control systems hide meta information of files in folders like.svn,.cvs, etc.
4. GIT branches are different from SVN branches: branches in SVN are not special at all, just another directory in the repository.
5. GIT does not have a global version number, whereas SVN does: this is by far the biggest feature GIT lacks compared to SVN.
GIT’s content integrity is better than SVN’s: GIT’s content storage uses the SHA-1 hash algorithm. This ensures the integrity of the code content and reduces damage to the repository in the event of disk failures and network problems.
If you are used to git branches, you will find git very useful.
Master is used to publish versions. the master branch is always consistent with the line.
Dev is used for a branch that is ready to go live. No more than 1-3 versions different from the master version (due to the deployment time required to go online, the merger with master will not be completed immediately). After stabilization, merge to master
Dev-test is used for various functional tests. Based on the dev branch. So you can roll back and so on at any time.
Dev – Feature name Each time a new feature is created, a feature to be developed is created based on the current dev. After each personnel receives the demand, pulls this branch to carry on the development. If multiple people develop a feature. Create a more detailed branch on that branch. For example: dev- Feature name – developer name
So you can have a process that pulls code from dev and prepares it for development and creates a branch of dev-functionality and then merges it into dev-test. Make sure the tests are ok before merging the dev- function name branch with dev. Finally, when it goes live, merge dev into Master.