$ git reset --soft HEAD~ #缓存操作
# 或者
$ git rest HEAD~
$ git log # commit log
$ git reflog # 操作 log
$ git diff --name-only --diff-filter=U
$ git cherry-pick <commit-id>
# git branch | grep -E '.*(feat|fix|xiaowei|release).*' | awk -F/ '{print $0}' | xargs -I {} git branch -D {}
# Use the following command to remove all branches with PREFIX prefix on remote server.
$ git branch -r | awk -F/ '/\/PREFIX/{print $2}' | xargs -I {} git push origin :{}
# You may want to do a dry-run first to see if it is the branches that you want to remove:
$ git branch -r | awk -F/ '/\/PREFIX/{print $2}'
$ git remote prune origin
$ git branch -r | grep 'origin/fix.*' | awk -F/ '{print $2"/"$3}' | xargs -I {} git push origin :{}
# 删除数字后缀的分支
$ git branch -r | grep -E 'origin/feat/[0-9]+' | awk -F/ '{print $2"/"$3}' | xargs -I {} git push origin :{}
# 删除数字版本分支
git branch -r | grep -E 'origin/[0-9].[0-9].[0-9].*' | awk -F/ '{print $2}' | xargs -I {} git push origin :{}
# 删除本地所有tag
$ git tag -d $(git tag -l)
# 删除所有远程Tag
$ git push origin --delete $(git tag -l) # Pushing once should be faster than multiple times
# 删除未追踪的文件
git clean -f
# 删除所有未追踪以及忽略的文件
git clean -df
# 垃圾回收,修建老的git/objects
git gc --aggressive --prune
# 展示top20
git verify-pack -v .git/objects/pack/pack-{hash}.idx | sort -k 3 -n | tail -n 20
# 删除历史文件
git filter-branch --tag-name-filter cat --index-filter 'git rm -r --cached --ignore-unmatch filename' --prune-empty -f -- --all
# 推送 dist 目录内容到 gh-pages 目录
git subtree push --prefix dist origin gh-pages