Почему папки остаются в моем локальном рабочем каталоге git после коммита и извлечения

git git-commit git-checkout

533 просмотра

1 ответ

Я создал папку, содержащую файлы в моей локальной рабочей структуре git. Я создал новую ветку с git checkout -b и использовал git add. и git commit -m "..." чтобы добавить эти файлы в мою локальную ветку. Но когда я делаю git checkout master, созданная и сохраненная папка все еще там. Почему? Я думал, что git commit поместит папку и ее содержимое в мою локальную ветку, отключив ее, когда я проверю мастер.

Автор: Matt W Источник Размещён: 29.09.2019 10:10

Ответы (1)


4 плюса

Решение

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

Вот пример - допустим, я сейчас нахожусь в чистой ветке с именем old_branchи извлекаю новую ветку с именем new_branch:

git checkout -b new_branch

Затем я создаю новый файл с именем test.txtв этой ветке и добавляю его в репозиторий:

touch test.txt  # creates a new file named test.txt
git add test.txt
git commit -m "Added test.txt"

test.txtФайл в настоящее время отслеживаются new_branchотрасли. Однако, когда я переключаю ветки обратно на old_branch:

git checkout old_branch

Поскольку test.txtон не отслеживается old_branch, он оставляет его в рабочем каталоге и не перезаписывает его. Это ожидаемое поведение. Если вы сделаете git statusэто, вы заметите, что test.txtфайл в настоящее время не отслежен.


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

git clean -n

Это будет список всех неотслеживаемых файлов, которые будут удалены. Если вы удовлетворены списком, вы можете удалить эти файлы с помощью:

git clean -f -d

Это деструктивная команда , тем более что она удаляет файлы, которые не отслеживаются текущей веткой. (Он не удалит их из веток, которые отслеживают эти файлы.)

Автор: Zachary Espiritu Размещён: 26.08.2017 10:49
Вопросы из категории :
32x32