Я и мои товарищи по команде работаем в проекте MVC C# с использованием Visual Studio. Сегодня я попытался создать .gitignore, чтобы игнорировать папки, которые должны быть зафиксированы в нашем репозитории, и папка (App_Data/) исчезла (в нашем репозитории).
Я объясню шаг за шагом, что я сделал:
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/
git add ., git commit -m "asdfad" и git pushgit rm -r --cached ., git add . и git commit -m "Cached"App_Data/, а в VisualStudio я вижу, что App_Data/ пуст, а некоторые .cs (классы C#) не отслеживаются, потому что товарищ по команде внес изменения, а я их не видел.Я бы подумал, что происходит то, что для каталогов git, у которых нет файлов, отслеживаемых им, он просто «удаляет» их (по крайней мере, с точки зрения объекта дерева, который сохраняется внутри базы данных git.
@maccettura это разные папки. Между каждой парой папок есть пробел :(
Что ж, тогда я действительно запутался, если это два разных предмета, а не Tp_Integrador/Tp_Integrador/App_Data/, это причина, по которой он не появляется. Вы буквально игнорируете это
Да, но он был удален из репозитория
@AgustinMeinardo Верно, потому что ты проигнорировал это.
В Git не может быть пустых папок. Поэтому, если вы игнорируете содержимое, вы в основном игнорируете папку, что касается Git. Вы можете обойти это, поместив туда фиктивный файл и игнорируя все файлы в App_Data Кроме вашего фиктивного файла. Конечно, я думаю, что более важный вопрос: для чего вы используете App_Data? Какое общее состояние вы там устанавливаете?
С уважением, понятия не имею. Содержимое App_Data изменяется, когда мы меняем код (например, класс C#). Я хочу вернуться вовремя и иметь папки, как вчера
Что ж, вам нужно точно выяснить, что вы с ним делаете, потому что вы можете обнаружить, что он вам вообще не нужен.





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, но не подпапку, сделайте в своем .gitignore (в newBranch):
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/.
Наконец, я сбросил свою ветку и создал новый репозиторий, начиная с последнего состояния.
Было ли что-нибудь в
App_Data, кроме папкиTp_Integrador/Tp_Integrador/bin/?