Расширения TFS/Git, похоже, игнорируют .gitignore

Я использую VS 2013 Update 3 с расширением Visual Studio Tools for Git. Это расширение предназначено для пользователей как Team Explorer, так и Git, и у меня нет других установленных и запущенных расширений, связанных с Git и TFS. Я использую облачную службу Microsoft TFS для резервного копирования и совместного использования своей работы.

Все работало как положено несколько месяцев. Я хочу снова использовать это расширение VS, но проблема в том, что файлы, которые следует игнорировать с помощью .gitignore, включаются по умолчанию. Тот же репозиторий Git при просмотре из командной строки не имеет этой проблемы и работает как положено.

Возможно, важно: одно время я наполовину настраивал прямую учетную запись TFS в Интернете, но никогда не использовал ее локально, и это никогда не коррелировало с какими-либо проблемами, о которых я здесь упоминал. Кроме того, давным-давно мне пришлось последовать совету в другой публикации, чтобы удалить эти двоичные файлы из системы контроля версий, потому что я слишком поздно добавил файл .gitignore. Поскольку в командной строке нет этой проблемы, я думаю, что что-то еще работает, и что --hard reset действительно сработал, как и предполагалось.

В чем проблема с ВС? Есть ли способ изменить настройку или вообще исправить упущение, чтобы игнорировать файлы в файле .gitignore в каталоге Git, но не игнорировать файл .gitignore?

Чтобы предотвратить некоторые возможные вопросы: я подтвердил, что каталоги и ветки одинаковы на обоих интерфейсах, заметив, что все изменения добавляются в Git/TFS и Posh Git, а также в Git Bash и все другие интерфейсы Git, которые я пробовал. Единственная проблема заключается в том, что дополнительные файлы, которые следует игнорировать, не игнорируются в расширении VS.

Вот пример используемого мной файла .gitignore, созданного VS:

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results

[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/

введите здесь описание изображения


person Justin Hale    schedule 04.09.2013    source источник
comment
Можешь показать нам свой .gitignore? Какой путь к файлам, которые не игнорируются? Когда вы говорите, что не игнорируется, что именно вы имеете в виду? Отображаются ли файлы в списке включенных изменений?   -  person Edward Thomson    schedule 04.09.2013
comment
## Игнорировать временные файлы Visual Studio, результаты сборки и ## файлы, созданные популярными надстройками Visual Studio. # Пользовательские файлы *.suo *.user *.sln.docstates # Результаты сборки [Dd]ebug/ [Rr]elease/ x64/ build/ [Bb]in/ [Oo]bj/   -  person Justin Hale    schedule 04.09.2013
comment
@EdwardThomson Файл слишком велик, чтобы показать его целиком. Выше приведены несколько строк для примера. Как видите, «[Bb]in/» находится в файле .gitignore, но все «Включенные изменения» находятся в каталоге «Bin/».   -  person Justin Hale    schedule 04.09.2013
comment
Это похоже на ошибку, которая существует в этой версии Git Provider. Если вы явно перечислите двоичные файлы (вместо каталога bin/), это сработает? (Это должно быть исправлено в следующей версии, извините!)   -  person Edward Thomson    schedule 04.09.2013
comment
@EdwardThomson Итак, я попробовал несколько способов указать то, что можно было бы назвать полным путем, включая D:\Full\Path\Bin\, Root\Git\Repo\Path\Bin\ и Root/Git/Repo/Path/Bin/ ( со звездочкой и без), думая, что расширение, написанное для использования в Windows, может быть суетливым в таких вещах, как направление косой черты. Ни один из них не работал, когда я нажимал кнопку обновления на панели изменений Team Explorer. Спасибо, что сообщили мне статус. Я могу попытаться отредактировать репозиторий исключений в соответствии с октакатом: help.github.com/articles/ignoring -файлы   -  person Justin Hale    schedule 04.09.2013
comment
Вы нашли решение или обходной путь?   -  person Maximus    schedule 11.01.2014
comment
Теперь я вижу другую проблему. Теперь, если я открою git из командной строки или использую GitHub для Windows, я увижу файлы, которых нет в Team Explorer. Разница в том, что теперь Team Foundation игнорирует окончания строк. Я понимаю это, потому что статус git показывает, что LF будет заменен на CRLF... в вашем рабочем каталоге. Вероятно, это проблема только для Windows, поскольку я читал, что согласованная политика обработки окончаний строк никогда не была доведена до совершенства в Windows, несмотря на то, что возможны различные способы устранения различий и внесения автоматических изменений.   -  person Justin Hale    schedule 13.01.2014
comment
@EdwardThomson Мне нужно добавить своего рода заявление об отказе от ответственности. К сожалению, я не сделал систематического обзора всех возможных различий, тем более что я только что обнаружил это различие в том, как отображаются списки различий файлов. Я также должен отметить, что, хотя существуют различия в том, как git status и Team Foundation Explorer считают файлы измененными, оба в конечном итоге игнорировали потенциальный конфликт, возникающий из-за окончаний строк в приведенном выше примере. т.е. попытка использовать git add не привела к фиксации. Таким образом, проблемы могут быть более эстетическими, чем что-либо еще.   -  person Justin Hale    schedule 13.01.2014
comment
Просто обновление, VS 2013 делает то же самое. На мгновение я подумал, что это связано с Git, потому что в командной строке была та же проблема, когда файл .gitignore не использовался. Однако это касалось только старых двоичных файлов, которые уже отслеживались. Новые двоичные файлы, такие как файлы .dll, правильно отслеживаются в каждой версии Git, которую я пробовал, кроме той, которая используется VS. Я даже добавил еще один файл .gitignore в свой пользовательский каталог, но безрезультатно. Возможно, VS использует секретный файл .gitignore, о котором никто не знает? В любом случае это похоже на foobar.   -  person Justin Hale    schedule 14.02.2014
comment
Я нашел ссылку проблема в другом месте. Приведенный ответ не работает постоянно, но, возможно, дает подсказку. По сути, VS добавляет файл xml в папку .git, и это помогает VS усложнить жизнь. social.msdn.microsoft.com/Forums/vstudio/en-US/   -  person Justin Hale    schedule 15.02.2014
comment
Я вижу те же симптомы и не могу объяснить. У меня есть решение с 20 проектами, 2 из них — веб-сайты. Мне нужно было включить файлы *.refresh, поэтому я изменил свой файл gitignore, закомментировав [Bb]in/, и добавил **/[Bb]in/** и !**/[Bb]in/*.refresh . С тех пор, как я это сделал, файлы DLL, на которые ссылается файл .refresh, и ТОЛЬКО эти файлы добавляются в git, когда я создаю файлы DLL в других проектах, которые не являются проектами веб-сайта, остаются вне системы контроля версий, поэтому я сомневаюсь, что это проблема с .gitignore. Что-то серьезно не так с реализацией VS git.   -  person MisterZimbu    schedule 19.02.2014
comment
Кроме того, если я отменю изменения, а не верну их, я не смогу изменить ветки; он говорит, что у меня все еще есть ожидающие изменения в .DLL, которые я удалил. Все включенные/исключенные/отслеживаемые файлы пусты, а статус git говорит, что ожидающих изменений нет.   -  person MisterZimbu    schedule 19.02.2014
comment
Кто-нибудь нашел более постоянное решение? Ссылка @JustinHale временно устранила проблему для меня, но она снова возникает случайным образом с другими файлами, которые следует игнорировать. Даже после последнего обновления VS.   -  person trh178    schedule 15.08.2014
comment
К сожалению, сотрудники службы поддержки Microsoft прислали мне ответ по электронной почте, в основном говоря, что это функция, а не ошибка. Это будет тяжелая битва.   -  person haleonj    schedule 15.09.2014
comment
comment
Обязательно обновитесь до VS 2013 Update 4, в котором исправлен ряд .gitignore ошибок.   -  person Edward Thomson    schedule 24.11.2014


Ответы (2)


Недавно у нас была такая же проблема с поставщиком git VS2013, который игнорировал .gitignore только для нескольких файлов. Оказалось, что в папке .git было ms-persist.xml с двумя соответствующими разделами <TrackedFiles> и <IgnoredFiles>.

Как указано в сообщении в блоге Эрик Нельсон закрытие VS, удаление файла и повторный перезапуск VS решили проблему.

person mbx    schedule 02.03.2015
comment
Блог Эрика недоступен сегодня, но этот совет сработал для меня. Спасибо! - person DanM; 24.07.2015
comment
@DanM В настоящее время сайт, похоже, работает, и если он в конце концов выйдет из строя навсегда, все еще есть архивная версия на archive.org - person mbx; 24.07.2015

Вы говорите, что используете VS 2013? Если это так, вам не нужны дополнительные инструменты git. У меня они не установлены на моем VS 2013, я могу прекрасно использовать TFS с GIT, и у меня нет проблемы с игнорированием .gitignore.

Вы даже можете управлять .gitignore через графический интерфейс IDE, поэтому форматирование всегда должно быть в формате, требуемом TFS/VS: http://msdn.microsoft.com/en-us/library/vstudio/hh967655.aspx#ignore

Как указано в Требованиях от: https://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c:

Примечание. Visual Studio 2013 по умолчанию включает инструменты Git, поэтому эти инструменты не нужны. Узнайте больше в MSDN: http://msdn.microsoft.com/en-us/library/vstudio/hh850437.aspx

person j0ffe    schedule 23.11.2014