Содержание
- Не отслеживать изменение прав на файлы и папки
- Исправить описание в последнем коммите
- Анализ проекта
- Изменить удаленный репозиторий
- Тэги
- История изменений
Не отслеживать изменение прав
git config core.fileMode falseИсправить описание в последнем коммите
git commit --amend -m "New commit message"Анализ проекта
# Какие файлы меняются чаще всего
git log --format=format: --name-only --since="1 year ago" | sort | uniq -c | sort -nr | head -20
# Все контрибьюторы отсортированные по числу коммитов
git shortlog -sn --no-merges
# Кто активен за последние полгода
git shortlog -sn --no-merges --since="6 months ago"
# Количество коммитов помесячно
git log --format='%ad' --date=format:'%Y-%m' | sort | uniq -c
#Где скапливаются баги, отфильтровано по коммитам с ключевыми словами
git log -i -E --grep="fix|bug|broken" --name-only --format='' | sort | uniq -c | sort -nr | head -20
# Как часто делаются revert/hotfix
git log --oneline --since="1 year ago" | grep -iE 'revert|hotfix|emergency|rollback'Изменить удаленный репозиторий
Проект склонирован через https, нужно изменить на ssh
# текущее состояние
git remote -v
#origin https://gitlab.com/my-username/my-project.git (fetch)
#origin https://gitlab.com/my-username/my-project.git (push)
# замена
git remote set-url origin git@gitlab.com:my-username/my-project.git
# проверка
git remote -v
# origin git@gitlab.com:my-username/my-project.git (fetch)
# origin git@gitlab.com:my-username/my-project.git (push)
Тэги
# просмотреть список тэгов
git tag
# посмотреть информацию по конкретному тэгу
git show 1.2.4
# добавить тэг
git tag -a v1.0 -m "version 1.0"
# тэги по умолчанию не пушатся в удаленный репозиторий.
# запушить конкретный тэг
git push origin v1.1
# запушить все тэги
git push origin --tags
# запушить коммит с новым тэгом
git push --follow-tags
# можно тэгом помечать ранее сделанный коммит.
# смотрим лог коммитов с хэшами:
git log --pretty=oneline
# берем первые 7 символов хэша нужного коммита и ставим тэг
git tag -a v1.0 -m "release v1.0" 700b806История изменений
# история коммитов в виде дерева
git log --pretty=oneline --graph
# вывод информации по изменениям, которые внесли коммиты (список файлов)
git log --stat
# изменения в последних 2-х коммитах
git log -p -2
# не показывать коммиты слияния
git log --no-merges
# +фильтр по автору
git log --stat --no-merges --author=johndoe
git log -- path/to/file
# изменения в конкретном файле
# красный - что было
# зеленый - что стало
git log -p --no-merges --author=johndoe -- resources/views/en/page.blade.php
# изменения в последнем коммите
git log -p -1 -- resources/views/en/page.blade.php
# или
git diff branch1 branch2
# какие есть коммиты в ветке develop, которых нет в main
# можно выполнять как в develop, так и в main
git log develop --not main
# какие изменения будут внесены из develop в main
git log develop -p main