WedX - журнал о программировании и компьютерных науках

.gitignore игнорируется Visual Studio?

У меня есть проект git, над которым я работаю, используя Visual Studio 2013 и Git.

Я заметил, что многие, если не все, файлы, перечисленные в моем файле .gitignore, по-прежнему отображаются как ожидающие изменения в окне Team Explorer.

Однако при выполнении git status с помощью bash я не вижу файлы (как и следовало ожидать). Почему это происходит и, что более важно, как заставить Visual Studio обрабатывать мой файл .gitignore так же, как git bash?

.gitignore файл:

Gitигнорировать файл

Окно ожидающих изменений (Team Explorer):

Окно ожидающих изменений


  • Где находится рабочий каталог вашего репозитория в приведенном выше примере? 21.03.2014
  • Структура папки будет C:\MyRepository\Source\MyProject\intranet\dotnet, где MyRepository — рабочий каталог, а папка dotnet соответствует папке, показанной на втором снимке экрана. Файл .gitignore находится в рабочем каталоге. 23.03.2014

Ответы:


1

У меня была такая же проблема со связанными файлами. Team Explorer заявил, что я добавляю связанные файлы, поэтому я добавил их все в свой .gitignore. Состояние git теперь было чистым, но Team Explorer продолжал показывать эти файлы как добавленные.

Щелчок правой кнопкой мыши по списку файлов в изменениях Team Explorer и выбор «Отменить», похоже, сработали. Сами файлы не удалялись, и они были убраны из моего списка изменений.

Похоже, что Team Explorer просто не сразу улавливает изменения в .gitignore. Надеюсь это поможет.

21.03.2014
  • Если ваши файлы уже помечены как включенные изменения, то нет, добавление их в .gitignore не повлияет задним числом. 21.03.2014
  • Я должен делать это все время - хотя это не постоянное решение - файлы продолжают появляться, и из-за приложения, над которым я работаю, эти файлы могут исчисляться сотнями! Очень утомительно нажимать undo для каждого. 23.03.2014
  • +1 Такое паршивое решение, но лучше, чем ничего :( 11.08.2014

  • 2

    Чтобы Visual Studio 2013 включала изменения, внесенные вами в файл .gitignore, удалите файл ms-persist.xml в папке .git вашего решения.

    09.07.2014
  • это ничего не делает, оно генерируется и будет просто регенерироваться после переключения панели изменений в Team Explorer. 11.08.2014
  • Да, он будет перегенерирован, но также будет перечитан файл .gitignore. 17.08.2014
  • Visual Studio 2015 все еще, кажется, сбивает с толку некоторые изменения в .gitignore. Удаление ms-persist.xml исправило это для меня, поэтому +1. 11.04.2016

  • 3

    Я хочу поделиться своим очень похожим опытом в Visual Studio 2017, хотя в моем случае git в командной строке не подтверждались файлы, перечисленные в моем .gitignore.

    Я использовал Powershell для создания файла .gitignore с помощью команды echo '' > .gitignore. Это создало файл, закодированный в UCS-2 LE BOM вместо UTF-8. В результате git перечислил файл в git status, но ни один из указанных файлов не был проигнорирован, пока я не преобразовал его в UTF-8. Так что... будьте осторожны при создании пустого файла с помощью такой команды Powershell, как бы мне ни хотелось попасть на подножку UTF-16.

    Как указано в другом ответе, я должен был использовать команду типа echo '' | Out-File .\.gitignore -encoding Utf8 для первоначального создания файла, хотя это создает файл UTF-8 со спецификацией.

    Кроме того, следующая команда, как я узнал из еще один ответ, скопирует содержимое из файла и создаст новый файл с обычной кодировкой UTF-8 без спецификации:

    Get-Content -Encoding utf8 .\.gitignore.bak | Out-File -Encoding utf8 .\.gitignore
    
    20.01.2018

    4

    Это старый вопрос, но все еще актуальный. В моем случае в Visual Studio Community 2015 .gitignore обрабатывается, НО неправильно интерпретирует правила.

    Например, этот файл .gitignore работает в git-клиенте CLI — он игнорирует все, кроме поддерева в /Assets/Scripts и файла .gitignore.

    # Ignore everything
    *
    # But descend into directories
    !*/
    # Recursively allow files under subtree
    !/Assets/Scripts/**
    #don't ignore this file
    !.gitignore
    

    Когда VS анализирует указанный выше файл .gitignore, он, кажется, неправильно интерпретирует разрешенную папку как: Разрешить эту папку, а также все файлы и папки в ней рекурсивно, поэтому каждое поддерево неправильно отображается в репозитории. Чтобы добиться того же результата, что и приведенный выше код, из Visual Studio, мне пришлось изменить его на это: Обратите внимание, что следующий код работает в VS, но больше не работает в Git CLI.

    # Ignore everything
    *
    #But don't ignore the /assets folder
    !/Assets/
    #Ignore everything inside the assets folder
    /Assets/*
    #but don't ignore the Assets/Scripts subtree
    !/Assets/Scripts
    #don't ignore this file
    !.gitignore
    
    18.04.2018
  • Gitignore не может игнорировать себя. 18.04.2018
  • Новые материалы

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

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]