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.