Подтвердить что ты не робот

Git Основная ошибка проверки: следующие файлы без отслеживания рабочих деревьев будут перезаписаны с помощью checkout

У меня есть репозиторий git. Он имеет A B C D E... фиксирует. Теперь я хочу проверить D как новый филиал под названием Dbranch. Поэтому я эксгумирую: git checkout D -b Dbranch. И теперь я хочу удалить эту ветку. Во-первых, мне нужно переключиться на мастер-ветку, а затем использовать git branch -d Dbranch, чтобы удалить ее. Но когда я излагаю git checkout master, это дает мне ошибку.

error: The following untracked working tree files would be overwritten by checkout:
    source/a/foo.c
        ...... (too many lines)
Please move or remove them before you can switch branches.
Aborting

Как удалить Dbranch?

4b9b3361

Ответ 1

Попробуйте git checkout -f master.

-f или --force

Источник: https://www.kernel.org/pub/software/scm/git/docs/git-checkout.html

При переключении веток продолжайте работу, даже если индекс или рабочее дерево отличается от HEAD. Это используется для отбрасывания локальных изменений.

При проверке путей из индекса не допускайте сбоев при незакрытых записях; вместо этого необработанные записи игнорируются.

Ответ 2

сделать a:

git branch

если git показывает вам что-то вроде:

* (no branch)
master
Dbranch

У вас есть "отдельная головка". Если вы изменили некоторые файлы на этой ветке, вы их совершите, затем вернитесь к мастеру с помощью

git checkout master 

Теперь вы можете удалить Dbranch.

Ответ 3

В Git 2.23 (август 2019 г.) это было бы с использованием git switch -f:

git switch -f master

Это позволяет избежать путаницы в с git checkout (которая имеет дело с файлами или ветками).

И это будет продолжаться, даже если индекс или рабочее дерево отличается от HEAD.
И индекс, и рабочее дерево восстанавливаются в соответствии с целью переключения.
Если указано --recurse-submodules, содержимое подмодуля также восстанавливается в соответствии с целью переключения.
Это используется, чтобы выбросить локальные изменения.