38. Staging и Изменения

Обновлено: 2024-03-12
4 мин

Working directory

Git - это система трёх основных стадий: working directory, staging area и repository.

day38_git01

Пройдем поэтапно каждую стадию.

Создадим пустую папку.

mkdir my_fodler
cd my_folder

Сделаем инициализацию git проекта.

git init

(../images/Day38_Git1.ru.png) После инициализации git репозитория создается скрытая папка .git

Здесь хранятся сведения о репозитории git, а также информация о наших ветках и коммитах.

Staging/Stage

Сейчас у нас пустая папка. Создадим пустой файл README.md и выполним команду

git status

Git знает о новом файле, но этот файл еще не зафиксирован в staging. Текущее расположение файла - Working directory, директория, где проиниализирован .git проект.

staging - это хранилище для файлов с изменениями, информация о которых попадет в единый коммит

Чтобы файл перешел в staging, необходимо его добавить. Для этого выполним команду

git add README.md

После добавления файла в staging area, цвет поменялся на зеленый

Можно добавить все измененные файлы с помощью команды

git add .

Знак . означает, что мы хотим добавить все обновленные файлы и папки.

Далее необходимо зафиксировать изменения в репозитории. Для этого выполним команду

git commit -m "Add README.md (или другой значимый комментарий)"

Коммит изменений

В процессе работы мы добавляем много различных файлов. Если мы захотим добавить более длинный и осмысленный коммит, то можно запусть команду без комментария

git commit

Откроется стандартный редактор текста. Записываем комментарий и сохраняем.

Проверим результат

git status

Требования к именам коммитов

У каждой компании/проекта есть свои требования к именам коммитов. В компании может быть несколько проектов, каждый из которых должен иметь свои требования к именам коммитов. В проекте может быть несколько веток, каждая из которых должна иметь свои требования к именам коммитов.

Существует гайдлайн, на который можно ориентироваться. Такой подход точно будет понятен для всех новых проектов. Некоторые проекты, соблюдабщие данную конвенцию: angular, electron

Коммит:

  • Должен использоваться present tense (“add feature” not “added feature”)
  • Должен использоваться imperative mood (“move cursor to…” not “moves cursor to…”)

Примеры имен коммитов

init: - используется для начала проекта/таска. Примеры:

init: start youtube-task
init: start mentor-dashboard task

feat: - это реализованная новая функциональность из технического задания (добавил поддержку зумирования, добавил footer, добавил карточку продукта). Примеры:

feat: add basic page layout
feat: implement search box 
feat: implement request to youtube API
feat: implement swipe for horizontal list
feat: add additional navigation button
feat: add banner
feat: add social links
feat: add physical security section
feat: add real social icons

fix: - исправил ошибку в ранее реализованной функциональности. Примеры:

fix: implement correct loading data from youtube
fix: change layout for video items to fix bugs
fix: relayout header for firefox
fix: adjust social links for mobile

refactor: - новой функциональности не добавлял / поведения не менял. Файлы в другие места положил, удалил, добавил. Изменил форматирование кода (white-space, formatting, missing semi-colons, etc). Улучшил алгоритм, без изменения функциональности. Примеры:

refactor: изменение структуры проекта
refactor: переименование переменных для лучшей читабельности
refactor: применить eslint
refactor: применить prettier

docs: - используется при работе с документацией/readme проекта. Примеры:

docs: обновить readme с дополнительной информацией
docs: обновить описание метода run()

Пропуск Staging Area

Можно сразу добавить коммит, добавив параметр -a в git commit:

Удаление файлов

Фиксация удаления как и добавления файлов происхоит через комит

Создадим файл -> Добавим в stage -> Удалим файл

touch old_file.txt
git add old_file.txt
git commit -m "add old_file to be removed"

Удаляем файл

git rm old_file.txt
git status

Переименование/Перемещение файлов

Мы можем переименовывать или перемещать файлы в проекте средствами операционной системы. Таке это можно делать командами git.

Пример:

git mv old_file.txt new_file.txt

Пропуск/игнорирование файлов

В Git это можно сделать рзличными способами:

  • Игнорировать изменения в неотслеченных файлах с помощью .gitignore файла
  • Игнорировать изменения в неотслеченных файлах с помощью exclude файла
  • Остановка отслеживания файла и пропуск изменений с помощью git update-index
  • Остановка отслеживания файла и пропуск изменений с помощью git rm

.gitignore

Достаточно в файл .gitignore добавить путь до файлов или папок, которые необходимо игнорировать

После обновления файл переходит в категорию Untracked files

Если файлы уже добавлены в stage, но нужно убрать файл, то можно использовать команду git rm --cached

Status сокращенно

git status -s

Ресурсы