#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». в любом случае, я думаю, что для демонстрационных целей это очень хороший пример, позволяющий понять разницу между тем, что такое рабочее дерево и что такое ветвь (что было более или менее вопросом, верно?).