## Initialize a projet * Create a new projet in gitlab a take note of its url ### Protecting the master branch On the gitlab page of your project go to *Settings/Repository* in the *Protected Branches* section. Select the **Master** branch and set *allow to merge* to **Masters** and *allow to push* to **No one** This will prevent anyone to push on the master branch, the only way to add code to the branch will be using merge requests. ### Setting the development branch * Retrieve the project on your computer, open a command line and execute. ``` git clone <your-project-url> ``` * Create the development branch ``` git checkout -b development ``` * Init your Angular, Nest or any other project and then any time you want to commit changes ``` git add . git commit -m "Commit changes" git push origin development ``` ## Start developments For any other development you should/must create branch from the development branch. First make sure to be on the *development* branch, you can use to see your current branch: ``` git branch ``` ### Working on a feature In our team organisation we are using IceScrum to keep track of our User Stories (US). Each US is identified by a number. In order to easily identify the commit that includes the US a branch name for a feature should be has a following *feature-\<number of the User Story\>-\<title_of_the_user_story\>*. You can create the branch executing: ``` git checkout -b feature-<number of the User Story>-<title_of_the_user_story> ``` ### Working on a bug fix Each bugfix branch should be named as the following *bugfix-\<title_of_the_bugfix\>*. You can create the branch executing: ``` git checkout -b feature-<number of the User Story>-<title_of_the_user_story> ``` **add tag** git tag -a 1.0.0 -m "complementary message" ```