# Git * [GitHub Flow](https://dev.to/karmpatel/git-branching-strategies-a-comprehensive-guide-24kh) branching strategy is used. * Direct push to `main` branch is prohibited. * Only merges to the `main` branch via Pull Requests from `feature/...` or `bugfix/...` branches are allowed. * Tags `v*` are created for releases on the `main` branch. * Gitea configuration is available in Site Administration, User Settings, and Repository Settings. ## Pull Request 1. Ensure your main branch is protected, so that direct push is disabled. 2. Update the local main branch. ```bash git checkout main git pull origin main ``` 3. Create a new branch, `feature/new-branch`, with a descriptive name and switch to it. ```bash git checkout -b feature/new-branch ``` 4. Add any changes. ```bash git add . ``` 5. Commit the changes with a message. ```bash git commit -m "new branch: create all boiler plate files" ``` 6. Push the new branch, `feature/new-branch`, to the remote Gitea repository. ```bash git push origin feature/new-branch ``` 7. Create a new Pull Request from `feature/new-branch` to the `main` branch. 8. Review and Merge the new branch into the `main` branch. 9. Switch back to the `main` branch. ```bash git checkout main ``` 10. Pull the latest changes that include the merged PR. ```bash git pull origin main ``` 11. Delete the local `feature/new-branch` branch. ```bash git branch -d feature/new-branch ``` 12. Delete the remote branch after merging if Gitea did _not_ delete it. ```bash git push origin --delete feature/new-branch ``` 13. Create a new branch for upcoming work, for example `feature/dev`. ```bash git checkout -b feature/dev ``` ## Troubleshooting ### Accidentally created a commit on local `main` branch instead of a feature branch 1. Create a new branch pointing to the extra commit. ```bash git branch feature/new-branch ``` 2. Reset the local `main` branch to match the remote `origin/main`. ```bash git reset --hard origin/main ``` 3. Switch over to the new feature branch ```bash git checkout feature/new-branch ``` 4. Push the new branch. ```bash git push origin feature/new-branch ``` 5. Create a Pull Request.