репозиторій git, ігноруючи всі .dll


88

Заголовок говорить все. Я намагаюся додати свої пакунки NuGet до сховища. Виявляється все, крім файлів .dll.

Файл gitignore не містить посилань на * .dll. Файли .dll не розпізнаються, коли вони розташовані де-небудь у всьому сховищі. info / exclude також порожній.

Я також клонував сховище (файлова система до файлової системи, на відміну від віддаленого до файлового системи) без удачі. Ця проблема також трапляється на двох різних комп’ютерах.

Я міг би додати .dll-файли вручну, але їх слід відстежувати. Чому їх не відстежують?


26
Що git config --get core.excludesfileговорить?
Antony Hatchkins

2
Крім того, як правило, не є гарною ідеєю використовувати git для відстеження двійкових файлів, оскільки git не може ефективно розраховувати дельти між версіями, тому збереження всіх версій буде марною тратою місця. Якщо DLL генеруються на льоту, краще просто ігнорувати їх у git. Якщо їх немає - краще скористатися іншим механізмом синхронізації (наприклад, rsync).
Antony Hatchkins,

Це пакети NuGet, які я намагаюся додати до git. Я не використовую функцію "Відновлення пакунків" NuGet, тому мені потрібна вся папка пакунків.
Пол Нопф,

Відповіді:


121

У вас є ~/.gitignore_globalабо ~/.gitignoreу вашому домашньому каталозі, де також можуть бути перелічені ці шаблони файлів?

Див. Https://help.github.com/articles/ignoring-files


6
Враховуючи, що він працює з dll-файлами, він працює на платформі Windows, тому ~ означає $ HOMEDRIVE $ HOMEPATH під Windows 7
Ентоні Хетчкінс,

9
Це виявилось проблемою. Однак я не додав цей глобальний файл ігнорування. Будь-яка причина, чому вона просто з’явиться з нізвідки? Тепер, коли я про це думаю, нещодавно я встановив SourceTree (від Atlassian). Може, це винен?
Пол Нопф,

6
У мене була та сама проблема, я також встановив SourceTree до цього. Тож, гадаю, справедливо здогадується, що SourceTree додав глобальний файл ігнорування, оскільки раніше він працював.
Андреас Кребс,

8
Редагувати: Добре, це додано за посиланням
Андреас Кребс

31
Мені довелося бігти, git check-ignoreщоб з’ясувати, де знаходиться файл. Знайдіть його за адресою ~ / Documents / gitignore_global.txt
Метт

98

Якщо ви використовуєте SourceTree та налаштування за замовчуванням, за замовчуванням вони ігноруватимуть усі бібліотеки DLL ... Інструменти => Параметри => Git, тоді «Редагувати файл» ... додайте «#» перед .dll => «# .dll» .. Зберегти та закрити.

Потім для Провідника Windows у папці пакунків у відкритому терміналі GitBash введіть "git add". і нехай це працює, поверніться в SourceTree, зачекайте секунду, і всі ті відсутні DLL-пакети, які відсутні, з’являться для вас, щоб зафіксувати і натиснути.


13
Правильна відповідь для користувачів SourceTree;)
jmpcm 03

Знав про загальний список ігнорувань, не міг знайти його в графічному інтерфейсі. Дякую!
Крістоф,

Інструменти => Параметри => Git / Mercurial Global Ignore List ... Якщо у вас його немає, ви можете створити та вказати на нього там.
KevinB

2
Розташування файлу: ~ / Documents / gitignore_global.txt
James McCormack

Це спрацювало для дерева джерел, але як для Visual Studio ігнорування не було в моєму gitignore. Будь-яке я використовував дерево джерел для цього завдання
Demodave

11

Я міг би додати .dll-файли вручну, але їх слід відстежувати. Чому їх не відстежують?

Ні, їх не слід відстежувати, якщо ви їх не додали. Відстежуються лише файли, які вже додані та зафіксовані; ось що означає "відстежується".

Спробуйте вручну додати один із них, git addі він скаже вам, чому він їх ігнорує, і запропонує використати, git add -fщоб додати файл у будь-якому випадку.


Я зробив "git add '/ пакети'", і він не виявив .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

2
Мені довелося "git add -f", щоб відстежувати файли, які насправді були проігноровані. Це виявилося записом у глобальному файлі ігнорування, який деяка програма там невідомо помістила.
Пол Нопф,

2

Я зіткнувся з подібною проблемою. Я не можу додати .dll файл із каталогу пакунків до мого git, тоді я знайшов файл gitignore_global.txt, оскільки sourcetree автоматично додав цей файл як загальне налаштування ігнорування git. Я видалив * .dll з файлу gitignore_global.txt і його робота для мене чудова.

Розташування файлу gitignore_global.txt, як показано нижче

C: \ Users \ XXXX \ Documents \ gitignore_global.txt або ви можете дізнатись це з sourcetree TOOL => OPTION => вкладка GIT і дізнатися загальний список ігнорувань


1

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


0

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

У системах Linux та MacOS глобальний git-ignore, швидше за все, у вашому домі ~/

~/.gitignore_global

У Windows це, ймовірно, у вашому каталозі користувачів. Або ваш локальний користувач (про що ви можете дізнатися, ввівши текст ECHO %USERPROFILE%або whoamiв командному рядку.

Якщо його там немає, то напевно .gitconfigзамість нього присутній. Шукайте тут місцезнаходження gitignore (наприклад, Documentsпапку Користувача ).

Редагувати : Використовуйте git config --list --show-originдля отримання детальної інформації про надані git-налаштування та відповідні розташування файлів.


0

Я знаю, що це питання дуже давнє, але я додаю для інших, хто може відвідати це питання в майбутньому. Ви можете змінити свій глобальний файл ігнорування відповідно до вищезазначених відповідей, але це вплине на ВСІ ваші репозиторії git. Якщо замість цього ви хочете отримати більш детальний підхід, ви можете просто виключити або конкретні бібліотеки DLL, або конкретні папки у вашому індивідуальному проекті .gitignores. Це замінює всі параметри ігнорування та змушує файли виявлятися та оброблятися git. Я думаю, що це кращий підхід.

.gitignore (для вашого конкретного проекту)

# Custom ignores
!*.dll
# or
!My.specific.dll

# rest of .gitignore
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.