Programming, electronics, lifestyle
https://git-scm.com/book/ru/v1/Инструменты-Git-Подмодули
git submodule init
git submodule update
--allow-unrelated-histories
stackoverflow.comВсе очень хорошо изложено в этой статье, не вижу смысла копировать
https://git-scm.com/book/ru/v2/Введение-Первоначальная-настройка-Git
# Rebase 3х верхних коммитов в интерактивном режиме (через текстовый редактор)
git rebase -i HEAD~3
# Перетереть историю в текущем remote
git push --force
# Снести верхние 3 коммита (без удаления изменений), для полного удаления коммитов - флаг `--hard`
git reset HEAD~3
# Застейджить все изменения
git add .
# Добавить изменения к предыдущему коммиту
git commit --amend
# Стянуть коммиты в свою историю, расходящиеся коммиты в своей ветке перенести вверх
git pull --rebase
# Добавить пустой коммит
git commit --allow-empty -m "Empty commit"
Замена автора в конкретном коммите с помощью переписывания коммита:
git commit --amend --author="John Doe <[email protected]>"
Замена одного автора на другого во всем репозитории:
OLD_EMAIL="[email protected]"
NEW_EMAIL="[email protected]"
NEW_NAME="John Doe"
git filter-branch --env-filter '
if test "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL"
then
GIT_AUTHOR_EMAIL=$NEW_EMAIL
GIT_AUTHOR_NAME=$NEW_NAME
fi
if test "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL"
then
GIT_COMMITTER_EMAIL=$NEW_EMAIL
GIT_COMMITTER_NAME=$NEW_NAME
fi
' -- --all
Источник: codeconcisely.com.
Настроить пользователя можно как для локального репозитория так и глобально:
Глобально:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
Локально:
# посмотреть текущие настройки локального репозитория
git config --list
# изменить настройки пользователя в локальном репо
git config user.email "[email protected]"
git config user.name "Your Name"
git config user.password "your password"
также это можно сделать вручную в файле .git/config
[user]
name = John Doe
email = [email protected]
Источник: rwsite.ru
Найти в каких коммитах менялся файл:
git log -- example.txt
Переписать историю и удалить файл:
git filter-branch --tree-filter 'rm -f путь/к/удаляемому/файлу' -- --all
Также если версия git cтарше 2.22:
git filter-repo --path путь/к/удаляемому/файлу --invert-paths