05. Commit
Last updated
Was this helpful?
Last updated
Was this helpful?
Ревизия (revision
) - это любое зафиксированное изменение в системе контроля версий. Процесс создания ревизии называется коммит (commit
). Снапшот (snapshot
) – это сам файл после изменения.
Revision и snapshot – это не одно и тоже. Коммит порождает ревизию, но сама ревизия может содержать внутри себя либо diff изменений, либо snapshot. Стоит рассматривать коммит как событие, содержимым которого является или diff или commit.
Процесс переключения между ревизиями или загрузки конкретной ревизии называется checkout.
The git add
command adds a change in the working directory to the staging area. It tells Git that you want to include updates to a particular file in the next commit. However, git add
doesn't really affect the repository in any significant way — changes are not actually recorded until you run git commit
.
The git commit
command commits the staged snapshot to the project history. Committed snapshots can be thought of as “safe” versions of a project — git will never change them unless you explicitly ask it to.
Когда вы делаете коммит, git создаёт новый объект коммита, используя файлы в staging area, а текущей коммит становится родителем для нового. После этого указатель текущей ветки перемещается на новый коммит.
Команда git commit --amend
позволяет перезаписать/изменить предыдущий коммит. Эта команда создаёт новый коммит, родителем которого будет родитель ошибочного коммита. Старый ошибочный коммит будет отброшен, конечно же если только на него не будет ещё каких-либо других ссылок, что маловероятно.
По умолчанию git commit --amend
берет текущую область индексирования и добавляет её в прошлый коммит. Если сцена пуста, то будет изменено только сообщение предыдущего коммита.
Don’t amend public commits.
Сохраняет изменения (модифицированные и staged файлы) в базе данных гита и сбрасывает HEAD
на последний коммит.
Использование stash
:
git stash apply
восстанавливает последний слепок из stash-базы оставляя его там. Могут возникать конфликты слияния, если один и тот же файл менялся после выполнения stash. Способы разрешения конфликтов те же.
git stash pop
- восстанавливает скрытые файлы и убирает их из списка.
git stash --keep-index
- скрывает файлы, но оставляет сцену
git stash --include-untracked|-u
- скрывает как отслеживаемые, так и неотслеживаемые файлы.
git stash --patch
- интерактивный режим, где можно указать какие именно файлы сохранить.
git stash --all
- сохранить все, даже
git stash drop stash@{1}
-
git stash clear
- очистить базу данных сохраненных изменений
git stash branch branch-name
- создает новую ветку, переходит к коммиту, в котором вы находились на момент скрытия работы, копирует в новую ветку содержимое буфера и очищает его, если изменения прошли успешно. Следует использовать, если на момент восстановления возможны конфликты.