Тестирование с новой "сиротской" веткой
На этом этапе мы создадим новую "сиротскую" (orphan) ветку. Сиротская ветка - это ветка, которая начинается без истории предыдущих веток. Это как начало совершенно новой истории в вашей машине времени. Это полезно, например, для веток с документацией или веток gh-pages
для веб - сайтов, где вы не хотите включать историю основного кода.
Убедитесь, что вы находитесь в директории ~/project/my-time-machine
.
cd ~/project/my-time-machine
Теперь создадим новую сиротскую ветку с именем new-start
:
git checkout --orphan new-start
Вы должны увидеть вывод, похожий на следующий:
Switched to a new branch 'new-start'
Теперь мы переключились на ветку new-start
. Обратите внимание, что файлы из ветки master
по-прежнему присутствуют в вашей рабочей директории. Это потому, что команда git checkout --orphan
подготавливает рабочую директорию и индекс для нового корневого коммита, но не удаляет существующие файлы.
Проверим статус:
git status
Вы должны увидеть что-то вроде этого:
On branch new-start
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
nothing added to commit but untracked files present (use "git add" to track)
Git воспринимает message.txt
как неотслеживаемый файл, потому что история ветки new-start
полностью отделена от ветки master
.
Чтобы действительно начать с чистого листа на этой сиротской ветке, обычно мы удаляем старые файлы и затем добавляем новый контент для этой ветки. Удалим файл message.txt
:
rm message.txt
Теперь проверим статус еще раз:
git status
Вы должны увидеть:
On branch new-start
No commits yet
nothing to commit (create/copy files and use "git add" to track)
Теперь рабочая директория чистая, и мы готовы создать первый коммит на нашей новой, независимой истории.
Создадим новый файл, специфичный для этой ветки:
echo "This is a fresh start!" > readme.md
Добавим новый файл в область подготовленных изменений (staging area):
git add readme.md
И, наконец, создадим первый коммит на ветке new-start
:
git commit -m "Initial commit for new-start branch"
Вы должны увидеть вывод, похожий на следующий:
[new-start (root-commit) a1b2c3d] Initial commit for new-start branch
1 file changed, 1 insertion(+)
create mode 100644 readme.md
Обратите внимание, что этот коммит также является "(root-commit)", как и первый коммит на ветке master
. Это подтверждает, что у него нет родителя и он является началом новой истории.
Теперь посмотрим на журнал коммитов для этой ветки:
git log --pretty=oneline
Вы должны увидеть только один коммит, который мы только что сделали:
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> new-start) Initial commit for new-start branch
Это показывает, что ветка new-start
имеет свою собственную независимую историю, отделенную от ветки master
.