Папка исчезла после gitignore

Я и мои товарищи по команде работаем в проекте MVC C# с использованием Visual Studio. Сегодня я попытался создать .gitignore, чтобы игнорировать папки, которые должны быть зафиксированы в нашем репозитории, и папка (App_Data/) исчезла (в нашем репозитории). Я объясню шаг за шагом, что я сделал:

  1. Я сделал свой .gitignore:
Tp_Integrador/.vs/
Tp_Integrador/Tp_Integrador/obj/
Tp_Integrador/packages/
Tp_Integrador/Tp_Integrador/App_Data/
Tp_Integrador/Tp_Integrador/bin/
Tp_Integrador/Tp_Integrador/Content/
Tp_Integrador/Tp_Integrador/Properties/
Tp_Integrador/Tp_Integrador/Scripts/
  1. git add ., git commit -m "asdfad" и git push
  2. git rm -r --cached ., git add . и git commit -m "Cached"
  3. Наконец, в нашем репозитории я не вижу нашу папку App_Data/, а в VisualStudio я вижу, что App_Data/ пуст, а некоторые .cs (классы C#) не отслеживаются, потому что товарищ по команде внес изменения, а я их не видел.

Было ли что-нибудь в App_Data, кроме папки Tp_Integrador/Tp_Integrador/bin/?

maccettura 10.10.2018 22:05

Я бы подумал, что происходит то, что для каталогов git, у которых нет файлов, отслеживаемых им, он просто «удаляет» их (по крайней мере, с точки зрения объекта дерева, который сохраняется внутри базы данных git.

eftshift0 10.10.2018 22:14

@maccettura это разные папки. Между каждой парой папок есть пробел :(

Agustin Meinardo 10.10.2018 22:50

Что ж, тогда я действительно запутался, если это два разных предмета, а не Tp_Integrador/Tp_Integrador/App_Data/, это причина, по которой он не появляется. Вы буквально игнорируете это

maccettura 10.10.2018 22:51

Да, но он был удален из репозитория

Agustin Meinardo 10.10.2018 22:53

@AgustinMeinardo Верно, потому что ты проигнорировал это.

maccettura 10.10.2018 22:54

В Git не может быть пустых папок. Поэтому, если вы игнорируете содержимое, вы в основном игнорируете папку, что касается Git. Вы можете обойти это, поместив туда фиктивный файл и игнорируя все файлы в App_Data Кроме вашего фиктивного файла. Конечно, я думаю, что более важный вопрос: для чего вы используете App_Data? Какое общее состояние вы там устанавливаете?

mason 10.10.2018 22:54

С уважением, понятия не имею. Содержимое App_Data изменяется, когда мы меняем код (например, класс C#). Я хочу вернуться вовремя и иметь папки, как вчера

Agustin Meinardo 10.10.2018 22:57

Что ж, вам нужно точно выяснить, что вы с ним делаете, потому что вы можете обнаружить, что он вам вообще не нужен.

mason 10.10.2018 22:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
186
3

Ответы 3

Git не хранит пустые папки, поэтому, если вы хотите, чтобы там была папка App_Data, вам придется вручную создать ее снова (если вы ее удалили) и поместить внутрь пустой файл, который Git может отслеживать и убедиться, что папка всегда создается.

Распространенным шаблоном является создание пустого файла с именем .gitkeep внутри папок, которые вы всегда хотите хранить в Git, а затем внутри вашего .gitignore вы говорите Git игнорировать вашу папку, хорошо, но не игнорировать файлы с именем .gitkeep ( в любом месте).

например

Tp_Integrador/Tp_Integrador/App_Data/
!.gitkeep

App_Data content change when we change the code (for example, a C# class). What i want is to return in time and have the folders as yesterday

Если вы можете, сбросьте свою ветку на фиксацию перед вашей последовательностью, описанной в вашем вопросе: сделайте git log и выберите фиксацию перед той, у которой в качестве комментария указано «Кэшировано».

git checkout -b newBranch <oldCommit>
git push -u origin newBranch

Цель состоит в том, чтобы сообщить о ваших изменениях в этот newBranch, прежде чем заменять им старый.

Затем, если вам нужно игнорировать некоторые части Tp_Integrador/Tp_Integrador, но не подпапку, сделайте в своем .gitignorenewBranch):

Tp_Integrador/Tp_Integrador/**
!Tp_Integrador/Tp_Integrador/**/
!Tp_Integrador/Tp_Integrador/App_data/

Таким образом, git rm -r --cached . , git add . добавит файлы из Tp_Integrador/Tp_Integrador/App_data/, но не из любой другой подпапки Tp_Integrador/Tp_Integrador/.

Наконец, я сбросил свою ветку и создал новый репозиторий, начиная с последнего состояния.

Другие вопросы по теме