Undo Mistakes 😱#
git restore filename#
- will discard uncommited change for this file
- cannot be undone afterward
git restore -p filename#
- p stands for patches
- will ask for each change in this file to be restore or not
git restore .#
- undo all changes since last commit
git commit –ammend -m “Commit Message”#
- change commit message of last commit
- do not change already pushed commit
git revert <SHA>#
- it reverts specified single commit
- <SHA> can be seen through
git log
, eg. 74e3b2b - it makes new commit by exactly doing opposite changes, so it is very safe
git reset –hard 74e3b2b#
- it resets HEAD to certain commit in history while deleting all the commits after it
- if commits just local then they are gone forever
git reset –mixed 74e3b2b#
- same as previous one but it will store all the changes from the removed commits as uncommited changes
git restore –source 74e3b2b filename#
- will restore this file to certain commit (just 1 file)
git reflog#
- it is advance version of
git log
Restore after hard reset#
- it even stores history for certain time after
git reset --hard
- you can
git reset 74e3b2b
but creating mew branch is preferred by git branch branch_name 74e3b2b
Restore after deleting entire branch#
- look for <SHA> from
git reflog
- then
git branch branch_name 36a46a1
Moving commit to another branch#
- if you want to move cirtain commits from current branch to new branch
- if moving commit to already present branch
Interactive rebase#
- is very advance, dangerous and powerful tool
- read comments during the process
Change commit history#
- for example if you want to change commit history upto 3 commits before current HEAD
git rebase -i HEAD~3
- you can change/reword commit messages, delete/drop commits, squash multiple commits together