Now let’s look at one of typical real life scenarios.
You came to the office in the morning and you want to get all latest changes:
git pull
this would sync your copy with other repository. If you want merge it manually you can do
git fetch
Let’s say you want to work on a new feature, good idea would be create a branch and work in this branch:
git checkout -b "feature_name"
At the end of the day (or before you go to lunch) you would want to save your work. You tell git of the files you want to save (you stage it):
git add file_names...
or add all updated files
git add -u
then save them
git commit -m "some comments"
optional, save your changes on the server as well
git push
If you stuck and want to start all over (without saving anything!) you can call reset:
git reset --hard
Once the feature is done, you want to merge it to the main branch:
– switch to the main branch
git checkout master
– update it
git pull
– and merge
git merge "feature_name"
if you during the course of feature implementation you did multiple commits you don’t want all of them appear in the master branch history. You want it to be visible as one commit only, so you squash it:
git merge "feature_name" --squash
If you get conflict errors, you need to edit all the files with conflict (git would list them to you), then save them:
git add "conflict_file"
git commit -m "Merge master"
To get the picture of git status – current branch name, which files had been changes locally, which commits had not been pushed you run
git status
To get the picture of all commits:
git log
To see what changes had been done to local files:
git diff
To see the picture of all branches:
git branch