Git reset hard vs soft vs mixed
- Git reset –soft to fourth commit

- Git Reset hard vs soft vs mixed

Git Branching
-
While building any application we might need parallel versions for multiple use cases
- Experimenting with changes (POCs)
- Handling multiple versions
- Handling multiple customers
-
When in git repository you are always in a branch and the default branch is
master. -
To view all the branches in your local repo

-
Lets create a new branch:
- we can create the new branch using
git branch <branch-name>a new branch will be create from the current HEAD and Branch (master) - Lets create a branch called as
REL_1.0=>git branch REL_1.0
- Even after you create the branch the HEAD will be pointing towards master i.e. working tree still represents master

- To be in REL_1.0 branch we need to explicitly execute the command
git checkout REL_1.0

- Now lets make a commit in REL_1.0 branch

- Now lets try to move to master branch
git checkout master

- If we want to create a new branch and move the HEAD to the new branch then we need to execute
git checkout -b <new-branch-name>. SO Lets create REL_1.1 and move the head to the REL_1.1
- Now lets create a commit in REL_1.1

- we can create the new branch using
-
Now lets make two more commits on REL_1.0 branch

-
To view the history lets use this command
git log --graph --decorate --pretty=oneline --abbrev-commit -
Merging Branches:
- Now lets assume that our work in REL_1.0 branch is done and we want to bring back the changes to master branch
- The current state of the branches are as shown below

- Now if we want the history or all the commits done in REL_1.0 also to be included in master (bring back all the changes), then if my master branch looks at the latest commit of REL_1.0 branch then we will still have two branches (master, REL_1.0) and the history will be retained and all the changes also will be retained

- This kind of scenario is called as
Fast-Forward Merge - Now lets assume our master branch is as shown below, in this case Fast-Forward will not work

- So the classical merge will happen

- Now lets come back to reality. The current history looks as shown below

- Now to merge from REL_1.0 to master, move to Master and execute
git merge REL_1.0

- Now lets assume we have done the completed the change in REL_1.1 branch and we need to bring back the changes to master, so we need to merge the changes.
- When we merge the code, we might get merge conflicts, It is upto the user who is merging to resolve conflicts.

- Now since we got the conflict we have two options
- undo the merge

- fix the merge:
- current situation:

- Open the conflicted files

- After fixing conflicts and saving the files execute
git add . && git commit
- Now execute
esc+:wq+Enterkey combination - Now look at history

- Our version graph

- current situation:
- undo the merge
