Всякие 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'