Всякие git хаки

Разделение настроек #

У гита есть 2 вида настроек:

Если нужно сделать глобальные настройки для определнных репозиториев, можно воспользоваться диррективой 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'