Git
Commit messages
npm install -g commitizen
npm install -g cz-conventional-changelog
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
- Conventional Commits
- Semantic Commit Messages
- commitizen/cz-cli: The commitizen command-line utility. #BlackLivesMatter
- commitizen-tools/commitizen: Create committing rules for projects auto bump versions and auto changelog generation
Global configuration & ignore
- Global configuration
- Global ignore
~/.config/git/config
[user]
name = Yuanji
email = [email protected]
signingkey = 3CB6EA7C55827AAD
[core]
quotepath = false
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
[merge]
conflictstyle = diff3
[diff]
colorMoved = default
[commit]
gpgsign = true
[init]
defaultBranch = main
~/.config/git/ignore
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
Nice to have
- Pager: dandavison/delta: A syntax-highlighting pager for git, diff, and grep output
- .gitignore template: gitignore.io
See also: dotfiles/git/.config/git at main · masakichi/dotfiles
Project wise configuration
.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = [email protected]:masakichi/wiki.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main
[user]
name = Yuanji
email = [email protected]
signingkey = 3CB6EA7C55827AAD
[commit]
gpgsign = true
Git log
List commit message between two tags
git log --pretty="%s" --no-merges v1.8.12..v1.9.0
Ref: Git - pretty-formats Documentation
Pre-commit
A framework for managing and maintaining multi-language pre-commit hooks.
For more information see: https://pre-commit.com/
Installation
- Arch Linux
- macOS
- Python
sudo pacman -S python-pre-commit
brew install pre-commit
pip install pre-commit
Current repository's configuration
.pre-commit-config.yaml
--8<-- ".pre-commit-config.yaml"
Ref: supported hooks
Setup git hooks
pre-commit install
Tips
Update git commit author date when amending
git commit --amend --date=now