Воспроизведение ошибки checkout
Чтобы понять, как исправить ошибку, сначала нужно ее воспроизвести. Это поможет прояснить, почему Git сообщает о конфликте. Наш скрипт настройки уже создал Git-репозиторий с двумя ветками: main и feature-branch. Ветка feature-branch содержит файл, который мы сейчас создадим локально в ветке main.
Сначала перейдите в каталог проекта. Все команды в этой лабораторной работе будут выполняться из этого каталога.
cd ~/project/git-checkout-demo
Давайте проверим текущий статус нашего репозитория, чтобы убедиться, что все чисто.
git status
Вывод должен быть следующим:
On branch main
nothing to commit, working tree clean
Это подтверждает, что мы находимся в ветке main без незавершенных изменений. Теперь давайте выведем список доступных веток.
git branch
Вы увидите две ветки, где * указывает на текущую ветку:
feature-branch
* main
Теперь давайте создадим конфликт. Мы создадим новый файл с именем feature.md в нашем текущем рабочем каталоге. Этот файл в настоящее время "не отслеживается" Git в ветке main, но файл с таким же именем уже существует и отслеживается в feature-branch.
echo "## My local changes to feature documentation" > feature.md
Снова проверьте статус, чтобы увидеть новый неотслеживаемый файл.
git status
Вывод теперь показывает feature.md как неотслеживаемый файл:
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.md
nothing added to commit but untracked files present (use "git add" to track)
Наконец, давайте попытаемся переключиться на feature-branch.
git checkout feature-branch
Эта команда завершится ошибкой и выдаст ошибку, которую мы изучаем:
error: The following untracked working tree files would be overwritten by checkout:
feature.md
Please move or remove them before you switch branches.
Aborting
Git прервал переключение, чтобы защитить ваш локальный, неотслеживаемый файл feature.md от перезаписи версией из feature-branch. На следующих шагах мы рассмотрим различные способы решения этой проблемы.