Всякие git хаки
Разделение настроек #
У гита есть 2 вида настроек:
- локальные - определяются в 
.git/config - глобальные - определяются либо в 
.config/git/config, либо в.gitconfig 
Если нужно сделать глобальные настройки для определнных репозиториев, можно воспользоваться диррективой includeIf.
В глобальные настройки гита добавляем следующее:
[includeIf "gitdir:~/Projects/work/"]
    path = ~/Projects/work/.gitconfig
Теперь если мы находимся в дирректории work, будут подключены настройки спецефичные для данных проектов
удалить файл из git repo #
git filter-repo -f --index-filter 'git rm --cached --ignore-unmatch unwanted-file.txt'
после этого надо пушить с форсом:
git push --force -u origin main
Перезапись автора коммитов #
Перезапись с определенного коммита
git rebase -r --root --exec "git commit --amend --no-edit --reset-author"
Перезапись всех коммитов
git rebase -r --root --exec "git commit --amend --no-edit --reset-author
❗ Если во время перезаписи будут происходить какие-то махинации с gitconfig, нужно автора прописать в локальные настройки
Подсчет колличества строк в репозитории #
git ls-files | xargs cloc
Git home config #
alias home='git --work-tree=$HOME --git-dir=$HOME/.cfg'