git покажет файл как невосстановленный, потому что он еще не зафиксирован. Вы должны внести изменения, прежде чем переключаете ветви.
Итак, вы создали ветку и внесли изменения в эту ветку. При попытке вернуться к master
мерзавца запретит это, потому что есть изменения, которые еще не были зафиксированы (или явно игнорировали, (что на самом деле то, что untracked
средства)
Причина файл восстанавливается, когда вы вынуждаете проверку (git checkout -f master
) master
происходит потому, что файл находится в master
Если вы хотите сделать это, вы должны сделать следующее
Создать и проверить ветку
git checkout -b somebranch
Удалить файл с somebranch
(--cached
фактически удалит файл из индекса, но оставит файл неповрежденным в вашей файловой системе.См git-rm reference docs)
git rm --cached somefile
Зафиксируйте изменение
git commit -m "Remove somefile"
Это удалит файл из мерзавца, но не с диска, так что теперь мерзавец у вас есть неотслеживаемые изменения (некое-файл на диске, но не в мерзавец)
Если вы хотите, чтобы другие участники, чтобы иметь возможность оформить сук, связать его с удаленным
git push --set-upstream origin somebranch
Теперь файл удаляется из origin/somebranch
и не master
При добавлении файла в .gitignore
он не удаляется из репозитория, если он уже совершил. Изменения в файле, howeve, будут проигнорированы (так же удаляем его). Если вы это сделаете, вам все равно придется удалить файл и зафиксировать его. После этого git больше не будет отслеживать файл при воссоздании (или любом другом действии в файле).
Спасибо, это работает, но мне нужно добавить «git add -u» перед тем, как совершить или использовать «git rm» вместо rm , Если вы отредактируете свой ответ, я приму его. – Eugenio
@Eugenio спасибо, что поймал это! Я отредактировал свой ответ, чтобы использовать 'git commit -am', который добавит все изменения, включая удаленные файлы. –