Merge: --no-ff vs default

--no-ff stands for no-fastforward.

Using no-fastfoward keeps the history of commits, including making a merge commit.

If you don't use this flag, the default merge behaviour will bring all commits into the merge target. This can be bad if you need to revert an entire feature (which comes down to being one "merge commit" when you use --no-ff)

Deleting all git branches that have already been merged.

git branch --merged | grep -v '\*\|master\|develop' | xargs -n 1 git branch -d
git branch -r --merged | grep -v '\*\|master\|develop' | sed 's/origin\///' | xargs -n 1 git push --delete origin

Get a commit list since last tag.

Good for making release notes / changelogs.

git log ..HEAD --oneline