To delete merged branches
git branch --merged | grep -Ev "(^\*|master|main|dev)" | xargs git branch -d
To retrieve commits between dates
git log --after="2020-03-17" --before="2020-03-19"
To retrieve full commit history of a file
Note: works even for deleted files
If you know path to the file.
git log --all --full-history -- <path-to-file>
If you do not know the path to the file.
git log --all --full-history -- "**/thefile.*"
Reset a file to it’s state in master
git checkout origin/master -- <path-to-file>
Script to pull latest changes from master and rebase the current branch
Filename: pull_and_rebase.sh
#! /bin/zsh
# Pull from latest master and rebase
# the current branch on master
current_branch=$(git rev-parse --abbrev-ref HEAD)
echo "### Rebasing $current_branch on master"
git checkout master
echo "### Pulling latest master"
git pull -r
echo "### Switching back to $current_branch"
git checkout $current_branch
git rebase master
echo "### Rebase complete"
chmod a+x pull_and_rebase.sh
echo "alias pull_and_rebase='./pull_and_rebase.sh'" >> ~/.zshrc
# reload zsh config
zsh -l
Remove ^M chars
In vim
:set ff=unix