2013-03-20 3 views
76

Заголовок говорит все. Я пытаюсь добавить свои пакеты NuGet в репозиторий. Все, кроме файлов .dll, обнаруживаются.git-хранилище, игнорирующее все .dlls

Файл gitignore не содержит ссылок на * .dll. Файлы .dll не распознаются, если они находятся где угодно во всем репозитории. info/exclude также пуст.

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

Я мог бы добавить DLL-файлы вручную, но их следует отслеживать. Почему они не отслеживаются?

+21

Что 'мерзавец конфигурации --get core.excludesfile' сказать –

+1

.? Также, как правило, ood идея использовать git для отслеживания двоичных файлов, поскольку git не может эффективно вычислять deltas между версиями, поэтому сохранение всех версий будет пустой тратой, если пространство. Если dlls генерируются «на лету», лучше просто игнорировать их в git. Если это не так - лучше использовать другой механизм синхронизации (например, rsync). –

+0

Это пакеты NuGet, которые я пытаюсь добавить в git. Я не использую функцию «Восстановить пакет» NuGet, поэтому мне нужно, чтобы вся папка пакетов была проверена. –

ответ

107

У вас есть ~/.gitignore_global или ~/.gitignore в вашем домашнем каталоге, в котором также могут содержаться ссылки на эти шаблоны файлов?

См https://help.github.com/articles/ignoring-files

+5

Учитывая, что он работает с файлами dll, он находится на платформе Windows, поэтому ~ означает $ HOMEDRIVE $ HOMEPATH под Windows 7 –

+8

Это оказалось быть проблемой. Однако я не добавил этот глобальный файл игнорирования. Любая причина, по которой это просто выскочит из ниоткуда? Теперь, когда я думаю об этом, я недавно установил SourceTree (от Atlassian). Может быть, это преступник? –

+6

У меня была такая же проблема, я также установил SourceTree до этого. Поэтому я думаю, что это справедливое предположение, что SourceTree добавил глобальный файл игнорирования, поскольку он работал в прошлом. –

8

Я мог бы добавить DLL-файлы вручную, но они должны быть отслежены. Почему они не отслеживаются?

Нет, они не должны быть отслежены, если вы не добавили их. Отслеживаются только файлы, которые уже добавлены и зафиксированы; это то, что означает «отслеживаемый».

Попробуйте вручную, добавив одну из них через git add и он будет сказать, почему он их игнорирует, и предложит вам использовать git add -f, чтобы добавить файл в любом случае.

+0

Я сделал «git add '/ packages», и он не обнаружил DLL. Затем я использовал -f и добавил его. Однако я нашел проблему. «* .dll» был в моем глобальном игнорировании. Не знаю, откуда это глобальное игнорирование. –

2

Вам нужно явно указать git для отслеживания любых новых файлов.

  1. Запустить git add filename, чтобы добавить файл в индекс git.

  2. Запустить git commit, чтобы зафиксировать изменения в вашем индексе.

git status также должен отображать список необработанных файлов и каталогов.

Если вы хотите перечислить все файлы в репозитории, которые игнорировались gitignore, вы можете запустить:

git ls-files . --ignored --exclude-standard --others 

Если вы хотите перечислить все неотслеживаемые файлы в репозитории:

git ls-files . --exclude-standard --others 
+1

Мне пришлось «git add -f» отслеживать файлы, которые на самом деле игнорировались.Это оказалось записью в глобальном файле игнорирования, которое какое-то приложение внесло туда для моего неосознанного. –

1

В моем случае не было .dll ссылок в файле .gitignore, и у меня не было глобального файла. Однако в подкаталоге .git я нашел файл ms-persist.xml. Я закрыл все экземпляры Visual Studio, а затем добавил мои отсутствующие .dll вручную в этот файл. Когда я снова открыл визуальную студию, DLL-файлы отображались как нужно, чтобы их можно было проверить. Я проверил их, и теперь я золотой ...

76

Если вы используете SourceTree и значение по умолчанию, оно будет игнорировать все DLL-файлы по умолчанию ... Tools => Options => Git then «Edit File» ... добавьте «#» до .dll => «# .dll» ... сохранить и закрыть.

Затем для проводника Windows в папке пакетов в открывшемся терминале GitBash введите «git add.». и пусть это сработает, вернитесь в SourceTree, подождите секунду, и все эти недостающие DLL-пакеты появятся для вас, чтобы совершить и нажать.

+9

Правильный ответ для пользователей SourceTree;) – jmpcm

+0

Знал о глобальном списке игнорирования, не смог найти его в графическом интерфейсе .. Спасибо! – Christoph

+0

Tools => Options => Git/Mercurial Global Ignore List ... Если у вас его нет, вы можете создать и указать на него. – KevinB

0

У вас есть глобальный .gitignore где-то или более .gitignore файлов в подкаталогах - относительно вашего корня проекта.

На Linux системах и MacOS глобальный ГИТ-игнорировать, скорее всего, в вашем доме ~/

~/.gitignore_global

В Windows это, скорее всего, в вашей директории пользователя. Либо ваш локальный пользователь (который вы можете узнать, набрав в ECHO %USERPROFILE% или whoami в командной строке.

Если нет, то непременно .gitconfig присутствует вместо этого. Посмотрите здесь, для расположения gitignore (например, Documents папка пользователя)

Edit:. Используйте git config --list --show-origin, чтобы получить подробную информацию о способствующих GIT-настройки и соответствующие местоположения файлов

Смежные вопросы