Создание фиксационного коммита

GitGitBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В Git фиксационный коммит - это особый тип коммита, который используется для исправления предыдущего коммита. Обычно его используют, когда вы хотите внести небольшое изменение в уже созданный коммит, не создавая при этом новый коммит. Фиксационные коммиты особенно полезны, когда вы работаете над большим проектом с множеством участников, так как они позволяют внести небольшие изменения без нарушения работы других.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") subgraph Lab Skills git/commit -.-> lab-12717{{"Создание фиксационного коммита"}} end

Создание фиксационного коммита

Предположим, вы работаете над проектом с несколькими другими разработчиками, и вы замечаете небольшую ошибку в коммите, сделанном несколько дней назад. Вы хотите исправить ошибку, но не хотите создавать новый коммит и нарушать работу других разработчиков. Именно в этом случае фиксационные коммиты приносят пользу. Создав фиксационный коммит, вы можете внести необходимые изменения без создания нового коммита, и фиксационный коммит будет автоматически объединен с исходным коммитом в ходе следующего ребейса.

Например, ваша задача - записать строку "hello,world" в файл hello.txt и добавить ее в виде "фиксационного" коммита к коммиту с сообщением "Added file1.txt", чтобы она могла быть автоматически объединена в последующей операции ребейса.

Для этого лабораторного занятия давайте используем репозиторий из https://github.com/labex-labs/git-playground.

  1. Клонируйте репозиторий, перейдите в директорию и настройте личность:
git clone https://github.com/labex-labs/git-playground
cd git-playground
git config --global user.name "your-username"
git config --global user.email "your-email"
  1. Создайте файл hello.txt, запишите в него "hello,world" и добавьте его в область подготовки к коммиту:
echo "hello,world" > hello.txt
git add.
  1. Чтобы создать фиксационный коммит, вы можете использовать команду git commit --fixup <commit>:
git commit --fixup cf80005
## Это хэш коммита с сообщением "Added file1.txt".

Это создаст фиксационный коммит для указанного коммита. Обратите внимание, что вы должны подготовить свои изменения перед созданием фиксационного коммита. 4. После создания фиксационного коммита вы можете использовать команду git rebase --interactive --autosquash, чтобы автоматически объединить фиксационный коммит с исходным коммитом в ходе следующего ребейса. Например:

git rebase --interactive --autosquash HEAD~3

При открытии интерактивного редактора не нужно изменять текст и сохранять для выхода. Это выполнит ребейс по последним 3 коммитам и автоматически объединит любые фиксационные коммиты с их соответствующими исходными коммитами.

Вот результат выполнения команды git show HEAD~1:

commit 6f0b8bbfac939af197a44ecd287ef84153817e9d
Author: Hang <[email protected]>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file1.txt

diff --git a/file1.txt b/file1.txt
new file mode 100644
index 0000000..bfccc4a
--- /dev/null
+++ b/file1.txt
@@ -0,0 +1 @@
+This is file1.
diff --git a/hello.txt b/hello.txt
new file mode 100644
index 0000000..2d832d9
--- /dev/null
+++ b/hello.txt
@@ -0,0 +1 @@
+hello,world

Резюме

Фиксационные коммиты - это полезный инструмент для внесения небольших изменений в предыдущие коммиты без нарушения работы других разработчиков. Создав фиксационный коммит, вы можете внести необходимые изменения и иметь их автоматически объединенными с исходным коммитом в ходе следующего ребейса.