*** GIT *** :: git add . git commit -m "Изменение Сайта" git push ``git init new_project``— создать репозиторий в новой папке new_project; ``git init --bare`` — создать «голый» репозиторий без рабочей директории (для серверов). только история коммитов ``git clone myproj`` — клонировать в папку myproj; ``git clone -b branch `` — клонировать только указанную ветку; ``git clone --depth=1 `` — сделать поверхностную копию (только последний коммит, быстрее и меньше места). ``git help <команда>`` — показать справку по команде (например git help commit). ``git status`` - показывает состояния файлов в рабочем каталоге и индексе ``git config`` — настройка Git (например git config --global user.name "Имя" и git config --global user.email "почта") ``git bugreport`` — создать архив с отчётом о баге (системная инфа, версия Git, логи), чтобы отправить разработчикам. ``Credential helpers`` — механизмы для хранения/управления паролями и токенами ``git config --global credential.helper store`` - сохранение логина/пароля в файл ``git config --global credential.helper 'cache --timeout=3600'`` - временное хранение в памяти, по умолчанию 15 минут ``git config --global credential.helper manager`` - Manager (Windows Credential Manager) ``git add .`` - содержимое рабочего каталога в индекс для последующего коммита ``git diff`` - вычисления разницы между любыми двумя Git деревьями ``git diff --staged`` - разница между индексом и последним коммитом ``git diff master branchB`` - разница между любыми двумя коммитами ``git commit -m "Комментарий"`` - сохраняет все данные, добавленные в индекс в слепок во внутренней базе данных, а затем сдвигает указатель текущей ветки на этот слепок ``git commit -a -m "Комментарий"`` - добавить отслеживаемые изменения и закоммитить ``git commit --amend`` - изменить последний коммит ``git log --oneline`` - команда короткого лога. Первая часть (a1b2c3d) — это хэш коммита. q - выход ``git notes add -m "Заметка"`` — добавить/просмотреть заметки к коммитам, не изменяя историю; ``git notes show a1b2c3d`` - просмотреть заметку конкретного коммита по хэшу (a1b2c3d) ``git notes list`` - список всех заметок ``git restore README.md`` - теряются все незакоммиченные изменения в этом файле. Если случайно изменил файл и хочешь вернуть исходное состояние. ``git restore --staged `` - удаляет файл из индекса (staged), но оставляет изменения в рабочей директории. Если добавил файл в индекс, но передумал коммитить его. ``git mv — git mv `` (переименовать или переместить файл), работает также с папками. ``git reset --soft `` — HEAD переносится на , изменения остаются в staged, рабочие файлы не меняются, использовать для «переделки» коммита с сохранением подготовленных изменений. ``git reset --mixed `` — HEAD переносится на , изменения убираются из staged (становятся unstaged), рабочие файлы не меняются, использовать чтобы убрать файлы из индекса, но оставить изменения. ``git reset --hard `` — HEAD переносится на , индекс очищается, рабочие файлы откатываются к состоянию , использовать для полного отката и удаления всех изменений. ``git rm file.txt`` — удалить файл из репозитория и с диска. ``git rm --cached file.txt`` — удалить файл только из репозитория, оставить на диске. ``git rm -r folder/`` — удалить папку рекурсивно. ``git rm -f file.txt`` — принудительно удалить изменённый файл. ``git clean -n`` — показать, какие файлы будут удалены (dry run). ``git clean -f`` — удалить неотслеживаемые файлы. ``git clean -fd`` — удалить неотслеживаемые файлы и папки. ``git clean -fx`` — удалить все неотслеживаемые файлы, включая игнорируемые в .gitignore. ``git clean -f -i`` — интерактивный режим, выбрать что удалять. ``git branch`` — показать ветки ``git branch new-branch`` - создать новую ``git branch -d old-branch`` - удалить ``git branch -m old new`` - переименовать Если работаешь с ветками — лучше git switch, Если нужно восстанавливать файлы из истории — только git checkout или git restore ``git checkout branch`` - переключиться на ветку ``git checkout -- file`` - восстановить файл ``git checkout -b new-branch`` - создать и переключиться на новую ветку ``git switch branch`` - переключение на ветку ``git switch -c new-branch`` - создание новой ветки ``git merge branch`` — слить ветку ``git merge --squash branch`` - использовать стратегию слияния ``git mergetool`` — запустить визуальный инструмент для разрешения конфликтов после слияния ``git log`` — показать историю коммитов ``git log --oneline`` - в одну строку ``git log --graph --oneline --all`` с графом веток ``git stash`` - временно сохранить изменения ``git stash apply`` - применить ``git stash list`` - показать список ``git stash drop`` - удалить ``git tag v1.0`` — создать тег ``git tag`` - показать все теги ``git tag -d v1.0`` - удалить ``git shortlog`` — краткий лог: показывает авторов и количество их коммитов ``git worktree add ../path branch`` - подключить несколько рабочих деревьев к одному репозиторию: добавить ``git worktree remove ../path`` - удалить ``git fetch origin`` - скачать все новые коммиты и ветки с удалённого репозитория, но не сливает их с локальной веткой ``git pull origin branch`` - скачать изменения и автоматически слить их с текущей веткой ``git push`` - отправить локальные коммиты на удалённый репозиторий ``git remote -v`` - управление удалёнными репозиториями показать ``git remote add origin `` - добавить ``git remote remove origin`` - удалить ``git submodule add path`` - подключение другого Git-репозитория внутри проекта: добавить ``git submodule init`` - инициализировать ``git submodule update`` - обновить ``git show HEAD`` - показать детали коммита, включая изменения, автора и сообщение ``git show a1b2c3d`` - показать детали коммита, включая изменения, автора и сообщение ``git difftool `` — запустить визуальный инструмент для сравнения изменений ``git range-diff `` - сравнить две серии коммитов ``git rebase`` — переписывает историю коммитов, «переносит» ветку на другой базовый коммит; пример: ветка feature с коммитами C и D, основанная на A, при git rebase main (где main: A---B) станет линейной: main: A---B, feature: C'---D'. ``git describe`` — описывает текущий коммит через ближайший тег и количество коммитов после него ``git revert `` — создать новый коммит, который отменяет изменения указанного коммита, безопасно для публичных веток. ``git apply `` — применяет патч к рабочей директории без коммита ``git cherry-pick `` — взять отдельный коммит из другой ветки и применить его к текущей ``git blame `` — показывает, кто и когда изменил каждую строку файла, полезно для поиска авторов изменений. ``git bisect start`` - поиск проблемного коммита ``git bisect bad`` - помечаем «плохой» коммит ``git bisect good `` - помечаем «хороший» коммит ``git grep -i "Текст"`` — поиск текста в репозитории ``git grep "FIXME" HEAD~3`` - ищет текст "FIXME" в состоянии репозитория три коммита назад. ``git fsck --full`` - проверяет целостность объектов Git и репозитория ``git reflog`` - показывает историю перемещений указателя HEAD и других ссылок, позволяет восстановить потерянные коммиты. ``git filter-branch`` — переписывает историю коммитов по определённым правилам (например, удалить файл из всех коммитов). ``git instaweb --httpd=webrick`` - запускает локальный веб-сервер для просмотра репозитория через браузер ``git bundle create repo.bundle --all`` - создаёт единый файл, который содержит коммиты и ветки, для передачи репозитория без прямого доступа к серверу (при наличии языка Ruby) ``git archive`` — создаёт архив (zip/tar) из содержимого репозитория ``git daemon`` — запускает свой мини-сервер по протоколу git://. ``git update-server-info`` — обновляет метаданные для раздачи репо по обычному HTTP (без умного CGI-сервера). ``git cat-file -p ``— проверить, игнорируется ли файл по правилам .gitignore. ``git checkout-index -a`` — извлечь файлы из индекса в рабочую директорию. ``git commit-tree -p -m "msg"`` — создать новый коммит из указанного дерева. ``git count-objects -v`` — показать статистику по несжатым объектам в .git/objects. ``git diff-index HEAD`` — сравнить индекс с последним коммитом. ``git for-each-ref --format="..."`` — вывести список ссылок (ветки, теги) с форматированием. ``git hash-object -w `` — посчитать SHA-1/SHA-256 хэш файла и записать его как blob в базу объектов. ``git ls-files`` — показать все файлы, отслеживаемые Git в индексе. ``git ls-tree `` — показать содержимое дерева (список файлов/папок) указанного коммита. ``git merge-base A B`` — найти общий предок двух коммитов. ``git read-tree `` — загрузить дерево в индекс (не в рабочую директорию). ``git rev-list HEAD`` — показать список всех коммитов от HEAD вниз. ``git rev-parse HEAD`` — вывести точный SHA-1/SHA-256 хэш указанной ссылки. ``git show-ref`` — показать все ссылки (refs/heads, refs/tags и т.д.) с их хэшами. ``git symbolic-ref HEAD`` — показать или изменить символьную ссылку (например, на главную ветку). ``git update-index --add `` — низкоуровневое добавление файла в индекс. ``git update-ref refs/heads/main `` — обновить ссылку (ветку) на другой коммит. ``git verify-pack -v .git/objects/pack/pack-*.idx`` — проверить целостность пак-файла. ``git write-tree`` — записать текущее состояние индекса как tree-объект и вернуть его хэш. *Клонирование репозитория в локальную папку:* .. code:: git clone https://github.com/Автор_Username/Pylessons.git J:\GIT\IT_Lessons *Создание нового репозитория на GitHub:* Перейдите на GitHub и войдите в свою учетную запись. Создайте новый репозиторий с именем IT_Lessons. При создании выберите "Public" или "Private" в зависимости от ваших предпочтений. *Привязка локального репозитория к вашему GitHub репозиторию:* .. code:: cd J:\GIT\IT_Lessons - переход в деректорию git remote remove origin - Удаляет удалённый репозиторий с именем origin из вашего локального Git-репозитория. Заменить URL удалённого репозитория git remote add origin https://github.com/Ваш_Username/IT_Lessons.git - Замените Ваш_Username на ваш реальный GitHub username. git push -u origin master - Отправить все изменения в ваш новый репозиторий на GitHub