git удаляет файлы только из одной ветки

#git #version-control #git-branch

#git #контроль версий #git-branch

Вопрос:

когда я удаляю файлы из одной ветки, они удаляются из всех веток. что я могу сделать?

Комментарии:

1. чтобы иметь возможность увидеть точную проблему, было бы очень полезно, если бы вы могли дать команды, которые вы выполнили (возможно, создав простой демонстрационный репозиторий для демонстрации проблемы: git init; touch bla; git add bla; git commit -m'bla'; git checkout -b A; git rm bla; … )

Ответ №1:

при удалении файла с помощью git и сохранении этого состояния проекта ( git commit ) он будет удален только в этом коммите и его дочерних элементах (говоря: в этой ветке). при объединении этой ветки с другой вполне возможно, что файл будет удален (если не изменен в другой ветке).

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

Ответ №2:

Нет, это неправда. Я думаю, что ваша путаница возникает из-за переключения между ветвями. когда вы выполняете «git checkout», это сохраняет ваше рабочее дерево, поэтому файлы, которые вы только что удалили, не появляются снова после переключения. Можно переключиться на другую ветку и сбросить все сделанные вами изменения (вы удаляете файлы). вы можете сделать это, например, написав «»git reset —hard» после переключения.

Комментарии:

1. это очень плохой совет. git reset --hard переместит указатель текущей ветви на указанную фиксацию. это сильно отличается от того, что git checkout делает, а именно, устанавливает заголовок для ветки (или фиксации / тега) и проверяет это дерево, затем повторно применяет изменения (если возможно, без текстовых слияний)

2. хорошо, я согласен, что, говоря о базовом варианте использования для новичков, немного опасно упоминать «reset — hard». в любом случае, я думаю, что для демонстрационных целей это очень хороший пример, позволяющий понять разницу между тем, что такое рабочее дерево и что такое ветвь (что было более или менее вопросом, верно?).