Git is a distributed version control system which helps developers to collaborate globally.
Well we need version control system for the following reasons:-
- It keeps the history of changes developers made.
- We know who made what changes.
- It merges conflicting changes (such as two people modified a single file at the same time then it will merge both the changes).
There are 3 workflows that you can go within Github, namely:-
It is used generally for small teams where everyone works on single branch in a central repository
Feature Branch Workflow
Features developed in dedicated branches and then merged with the main codebase using pull request. Here the main codebase is kept clean and working
Each developer forks from the main repo and do changes and send pull requests. Here each developer will have own online repo of the project
Since this a small project right now I will start with centralized workflow.
As hasura provides git integration in their platform I am going to use GitHub as my code repository. So let's initialise our codebase. For instructions about installing git on your computer go to this link. First I have to create a folder and type the command
This will initialise my codebase and track my changes. You will see a hidden folder is created inside my folder snipcode named .git. It contains all the files required for version control.
After adding a readme file to commit the following changes in snip code we have to add and it to the staging area and then commit.
git add README.md
git commit -m "Initial commit"
git commit has an option of adding a message to the commit.
Now all these are happening in my local environment. To push my codebase in GitHub I have to create a repo named snipcode.
After this, I will add the remote in my local repo with name origin(general convention).
git remote add origin https://github.com/sroy8091/snipcode.git
Finally, I will push my local repo to GitHub using push command in the master branch
git push origin master
One of the useful commands is git status. We should always use this to know the status of working tree. One snapshot of my project's status is
And here is the cheat sheet for git provided by the Tower.
Here is the index of all the post regarding this series of snipcode developemnt
Part I: App Idea
Part II: App prototype
Part III: Local Development
Part IV: G for Git
Part V: Data Modeling
Part VI: Data & Auth APIs
Part VII: Basic Functionalities
Part VIII: App Screen 1
Part IX: App Screen 2
Part X: App Screen 3
Part XI: User Reviews
Part X: Final Submission