* ЭТО СЫРАЯ ВЕРСИЯ КРАТКОЙ ДОКУМЕНТАЦИИ ПО GIT ДЛЯ РАБОТЫ С ЭТОЙ ДОКУМЕНТАЦИЕЙ, МЫ ВЕРНЕМСЯ СЮДА ПОЗЖЕ
для менеджмента версий. в git есть несколько основных понятий. база данных, конфиг, ветки, файлы, изменения файлов, коммиты, пуши и тд. подробнее об использовании git можете прочесть здесь
для описания коммитов будет использоваться одна строка (этот процесс может быть намного детальнее но в текущих реалиях такую дотошность я считаю излишней), разновидности работ при коммитах которые пишутся вначале:
- frame: работа со структурой. создание файлов, переименование, работа с переносом блоков текста
- write: написание продолжения, расширение существующего, как правило без изменения старого
- fix: исправление недочётов, орфография, некорректные ссылки, обновление на более актуальную информацию
- realise: завершённая документация со всеми закрытыми заложенными гештальтами
- test: тестовый коммит для теста фичи или возможностей
после просто напишите краткое описание того, что вы сделали, дополнительно желательно описать где вы это делали, а каком файле или какого рода совершалась работа
для инициализации новой базы данных:
git init
для установки пользователя
git config user.name "name"
git config user.name "[email protected]"
- так же можно найти файл .git/config и изменить параметры в нем
для просмотра конфига:
git config --list
cat .git/config
- 1 команда выводит весь конфиг
для удаления пункта конфига или секции
git cinfig --unset user.name
git cinfig --remove-section user
для настройки редактора по умолчанию: visual code
git config --global core.editor "code --wait"
sublime
git config --global core.editor "'C:/Program Files (x86)/sublime text 3/subl.exe' -w"
notepad
git config --global core.editor "'C:\Program Files\Notepad++\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
для добавления сокращения можно использовать:
git config alias.cl "config --list"
git config alias.sayhi "echo 'hello'; echo 'from git'"
для вывода справки:
git help config
в гит существует 4 области:
- папка проекта
- индексируемые файлы. временные виртуальные приставления файлов с которыми вы в данный момент работаете и собираетесь опубликовать, все что будет находится в индекс в последующем будет перенесено в коммит
- репозиторий это готовые изменения проекта, он имеет свое название, описание, дату и автора
- репозиторий на сервере
что бы посмотреть текущее состояние проекта
git status
для того что бы проиндексировать файл:
git add README.md
для просмотра информации о коммите
git show --pretty=fuller
git show d796824 --pretty=fuller
добавление имени стороннего автора создавшего проект при коммите
git commit --author='Name Second <[email protected]>' --date='Tue Aug 29 12:31:27 2017 +0300'
в гите нельзя в коммит добавлять пустые папки, он их не обнаруживает
что бы добавить все изменения в директории
git add .
что бы откатить добавленные ненужные файлы
git reset .obsidian
мы можем создать файлы .gitignore в корне проекта, записанные туда файлы и папки будут игнорироваться при индексации и коммите
что бы сделать коммит без текстового редактора с коротким сообщением:
git commit -m 'add gitignore'
коммиты желательно делать при небольшом объёме проделанной работе. закончили реализовывать какую-ту функцию или пофиксили баг, проверили работоспособность и коммит с описанием изменений (принцип атомарности)
если коммит слишком большой, то желательно разбить его на блоки с помощью add (с помощью reset можно откатить если добавили лишнее)
так же отсутствие регулярных коммитов может помешать восстановлению утерянных файлов или помешать отладке каких либо проблем
заголовок коммита (тот что с тегом '-m' или первая строка в редакторе) не должен превышать 50 символов, что бы этот коммит адекватно отображался во всех интерфейсах. заголовок как правило делится на 3 части. первое, вид работы (feat:, test:, build:, refactor:), между видом работы и ':' пишется файл с которым производилась работа (если это так) и в конце уже пишется само описание
текст описания желательно меньше 72 символов в ширину
тег -p позволяет сохранить не все изменения по текущему файлу, а только конкретные изменения
git add -p README.md
- для подтверждения или игнорирования коммита, можно выбирать между вариантами 'y' и 'n'. так же можно посмотреть другие функции при помощи '?'
так же при удалении файла, изменения удалённого файла так же записываются так же при помощи git add
ключ --cached существует для удаления или добавления чего либо в индексируемое
если файл был переименован и не было внесено изменений, гит поймет что этот переименованный файл тот старый файл и свяжет его с контролем версий
переименует файл и сразу внесет переименование в индекс:
git mv 'abc.txt' '123.txt'
для удаления файла из проекта и индексов:
git rm -r test.txt
после коммита, вы можете подключится к удалённому серверу, это уже будет удалённый репозиторий не на вашем компьютере
git remote -v
git remote add origin https://github.com/Tand-Anthros/Documentation.git
и наконец давайте отправим проект на удалённый сервер
git push origin main
- у вас появится окно авторизации в ваш гитхаб
если у вас проблема с несуществующей веткой, то адаптируйте устаревшее название ветки на новое
git branch -m master main
наименование main означает название ветки, про работу с ними ниже
для просмотра текущих веток с их названием и идентификатором
git branch -v
- текущая ветка будет помечена "*"
для просмотра текущего идентификатора для ветки master
cat .git/refs/heads/master
для определения новой ветки и переключение на неё
git branch feature
git checkout feature
git checkout -b feature
- последний вариант для реализации этого действия в одну команду, для удобства
выбранная ветка считается HEAD и переключение на неё означает что git по умолчанию будет работать с этой веткой
между ветками можно переключатся, когда вам требуется выполнять разработку проекта не линейно перед этим обязательно делайте коммиты что бы не потерять изменения, однако если вы намеренно хотите бросить текущие изменения то вы можете использовать параметр "-f" что бы насильно заменить ветку забыв сделанные изменения или же просто откатить работу к последнему коммиту этой ветки
для сброса изменений до коммита и для сброса изменений и переключение на другую ветку
git checkout -f
git checkout -f main
если вдруг вы захотели вернуть наработки на ветке с которой переключились
git stash pop
если есть проблемы с коммитом, то можно склонировать репозиторий и попробовать заного
git clone https://github.com/Tand-Anthros/Documentation.git
получить данные из коммита
git fetch
объединить данные данной ветки с родительской веткой
git merge
пример успешного развертывания:
git init
git remote add origin https://github.com/Tand-Anthros/tnm-rpg.git
git pull
git checkout main
git add .
git commit -m 'mesage'
git push
- если в начале консоли ':', то это less, со своим собственным управлением. так к примеру 'q' это выход