GIT - Не вдається проігнорувати файл .suo


84

Я намагаюся працювати з Git разом із колегою в додатку, написаному на C #.

Ми додали запис "project1.suo" у файл .gitignore, але кожного разу, коли кожному з нас доводиться фіксувати проект, Git, здається, каже нам, щоб ми також фіксували файл "project1.suo".

Ми спробували багато методів, щоб додати файл у .gitignore так:

*.suo
project1.suo
c:\project\project1.suo

Ми не можемо вирішити цю проблему.


2
файл .gitignore itselft доданий до репо?
Steve B

yes є у сховищі
Laxedur

3
Я припускаю, що файл був доданий один раз, спробуйте git rm для цього файлу явно, зафіксуйте і подивіться, чи він все ще пропонується як доданий файл.
Steve B

чи можете ви сказати мені, як я можу використовувати команду rm, тому що я намагався, але команда не може знайти файл ...
Laxedur

@SteveB .gitignore не потрібно додавати до сховища, щоб діяти.
Ікке,

Відповіді:


165

git не ігнорує файли, які були додані до сховища. Якщо ви хочете, щоб його проігнорували, вам доведеться видалити файл зі сховища:

git rm --cached project1.suo
git commit -m "Delete suo file from repository"

Це видалить файл зі сховища, поки він все ще знаходиться на вашому жорсткому диску.


якщо ви переглядаєте файли * .suo, звичайно, вони не будуть віддалено надсилати ці файли. Чи це спричинить проблему для людини, яка клонує цей проект?
Waqas

Якщо ви використовуєте клієнт Visual Studio, звідти це зробити неможливо, вам доведеться використовувати оболонку cmd. Але якби я використав команду rm з оболонки, я побачив би файл .suo із закресленням, але якби я здійснив зміну через інтерфейс VS, він знову з’явиться. Вам потрібно виконати обидві команди вище через командний рядок.
Майкл Блекберн,

1
@Waqas ні, візуальна студія просто створить для них новий файл. Це коли .gitignore виключаючи * .suo як частину сховища є важливим. Коли вони виконують дії, .gitignore, який вони перевірили, заважатиме їм (або, принаймні, відбиватиме їх) від перевірки у власному файлі SUO.
Michael Blackburn

3
Це може бути не очевидно для деяких нових людей. Це спрацювало як шарм. Щоб виконати цю команду, ви повинні бути всередині папки, де знаходиться .suo. Першою командою, яку потрібно запустити в cmd.exe, є зміна каталогу "CD <введіть повний шлях до кореневої папки .suo>, потім натисніть клавішу Enter. За замовчуванням ви можете не побачити папку .vs, де знаходиться .suo, тому переконайтеся, що показано приховані файли ввімкнено у кореневій папці вашого сховища. Мій файл не мав назви проекту. Просто розширення. git rm --cached .suo git commit -m "Видалити файл suo зі сховища"
moto_geek

якщо потрібно проігнорувати папку, і вона вже знаходиться у віддаленому репо. використовуйте опцію -r в команді, мерзотник ет -r --cached <шлях до папки>
Сомнате Kadam

3

Я завжди повертаюся до цього питання, щоб використовувати метод у відповіді, але я знайшов краще рішення - ігнорувати зміни у цьому файлі. Метод є

git update-index --assume-unchanged project1.suo

або

git update-index --assume-unchanged .vs/config/applicationhost.config

Щоб скасувати це використання --no-accept-unchanged


Я отримую повідомлення "фатально: неможливо позначити файл Web <каталог> / <файлтоекклюд>"
dancerjude

Зверніть увагу, що це призведе до проблем, коли хтось оновить файл. Git спробує оновити файл, але помічає, що він змінився, і видасть вам повідомлення про помилку. У будь-якому випадку, --skip-worktreeце краще, ніж --assume-unchanged, яке слід використовувати лише з міркувань продуктивності.
Ікке,

-4

У мене була та сама проблема. Рішення Ikke допомагає, але не забудьте видалити запис * .suo із вашого .gitignore, якщо він є. Після виправлення файлу виконайте

git add **/*.suo

1
.Suo НЕ слід видаляти з .gitignore, щоб відповідати вимогам OP.
Калтор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.