SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы

Список вопросов Печать

Пример использования git


Метки: git .gitignore .gitkeep patch diff xargs 

Ответы

RemiZOffAlex  Создано: 2019-01-24 03:22:10.863636  Обновлено: 2023-06-17 15:38:56.332745

Создать новый репозитарий

git init

Добавить новый файл в репозитарий

git add filename

Зафиксировать изменение

git commit -m 'Название'

Отправить локальные изменения на сервер

git push

Загрузить изменения с сервера

git pull

Клонировать репозитарий с сервера

git clone https://github.com/RemiZOffAlex/specialistoff.net.git

История изменений

git log

История изменений одного файла

Также можно выяснить когда был удалён файл в git

git log -- <filename>
git log -p <filename>

История изменений между датами

git log --after="2016-01-31"
git log --after="2016-01-31" --until="2017-03-10"
git log --until="2017-03-10"

Сравнить последние изменения

git diff

Сравнить две ветки

git diff remizoffalex..master

Сравнить изменения с удалённым репозиторием

git diff <local branch> <remote>/<remote branch>

Сравнить, выбрать по регулярке и вывести только имена файлов

git diff -Gcoding  --name-only | xargs git add

Сравнить по хеш-сумме

git diff <before sha> <sha>

Применить патч

git apply 1.patch

Сравнить по хеш-сумме и применить/откатить изменения

git diff hash1..hash2 filename | git apply
git diff hash1..hash2 --text | git apply

Просмотр и управление внешними репозитариями

git remote

Добавление ссылки на внешний репозитарий

git remote add remizoffalex https://github.com/RemiZOffAlex/specialistoff.net

Удаление ссылки на внешний репозитарий

git remote remove remizoffalex

Переключить на удалённую (remote) ветку

git checkout -b dev origin/dev

Получить удалённые ветки

git branch -r

Отслеживать удалённые ветки

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

Подмодули

Изменить url для подмодуля

git submodule set-url [--] <path> <newurl>

Статистика

Статистика по автору

git log --author="<authorname>" --oneline --shortstat

Количество файлов и строк кода

git ls-files | xargs wc -l

Файл .gitkeep

Размещается внутри пустого каталога для обязательного сохранения самого каталога, если в нём нет содержимого

Файл .gitignore

Размещается внутри каталога проекта или в любом из подкаталогов и содержит список игнорируемых файлов, каталогов, подкаталогов, в том числе по маске

Хуки

Размещаются в каталоге .git/hooks

Хуки можно использовать для запуска сценариев CI/CD

post-receive

Применяется после получения коммитов

Пример:

#!/bin/sh
cd ..
GIT_DIR='.git'
git reset --hard
kill -s HUP `cat /var/run/uwsgi/specialistoff.net.pid`

Возможно будут интересны и другие вопросы