Лучший вопрос может быть - зачем вам это делать? Если вы хотите, чтобы файл отслеживался, проигнорируйте его (добавьте префикс его шаблона в .gitignoreфайле !, например, !dont/ignore/this/file).
Охад Шнайдер
6
@OhadSchneider Это полезно, если вы принудительно фиксируете файл (ы) сборки в другую ветку. Несколько проектов делают это, например, StrongLoop для безопасного развертывания
Deminetix
5
@OhadSchneider Для нас это больше, потому что большинство разработчиков устанавливают git с Visual Studio 2015, которая добавляет глобальный gitignore в папку пользователя. Это исключает файлы, такие как * .dll и * .exe. Это отлично подходит для наших новых проектов, в которых используются только пакеты nuget, которые извлекаются во время сборки, но для небольшого числа старых проектов мы по-прежнему используем библиотеки DLL, на которые вручную ссылаются в решении. Для этих проектов мы хотели бы включить их вручную, вместо того, чтобы просить каждого разработчика комментировать файлы * .dll и * .exe в глобальном gitignore.
Нуллий
4
@Nullius Разве вы не можете просто игнорировать их на более высоком уровне .gitignore(скажем, добавить .gitignoreв ту же папку, что и DLL, или выше, или что-то)?
Хм, это не работает, в состоянии git файл все еще не отображается
Марк
5
Ну, я проверил это, чтобы убедиться, что это действительно работает, и это работает. Можете ли вы описать свой environemnt (ОС, git версия ...)? Это то, что я в основном сделал: echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # works(не могу вставить новые строки в комментарии, выполнить команды 1 за 1
Даниэль Бёмер
4
То же самое случилось со мной, я ранее запустил git update-index --asume-неизмененный в моих файлах. Мне пришлось отменить это с --no-предположить-неизменным, и это сработало
Jako
4
Это работает только для меня с использованием подстановочных знаков, с использованием git 1.9.5 в Windows, даже после попытки --no - предположить-без изменений. «git add - f <filename>» ничего не делает, но «git add -f *» работает. Использование TortoiseGit также работает.
mhenry1384
@ mhenry1384 Причина, по которой он работает только с подстановочными знаками в Windows, может быть связана с тем, как используется разделитель пути. Для меня косая черта "/" работает, но обратная косая черта "\" не работает. Тот факт, что cmd / PowerShell преобразует для нас "/" в "\", позволяет легко с этим справиться.
оу
19
Несмотря на рабочее решение Даниэля Бёмера, Охад Шнайдер предложил лучшее решение в комментарии:
Если файл обычно игнорируется, и вы принудительно добавляете его - его можно случайно снова проигнорировать в будущем (например, когда файл удален, выполняется фиксация и файл создается заново).
Это правильно. Я использовал опцию --force для небольших файлов данных, а затем немного перестроил структуру папок и перекрыл все файлы с принудительным отслеживанием. ОДНАКО: при .gitignoreиспользовании !specific-file-name.txtбез иерархии папок, таким образом, отслеживание будет следовать за файлом вокруг репо.
Мерлин
Это зависит от сценария, например, когда-нибудь вы хотите исключить «1.txt» во всех папках, а иногда «folder1 / *. Txt»
AS
15
Это не "лучшее" решение. Это решение другой проблемы.
Aij
2
Другим способом достижения этого будет временное редактирование файла gitignore, добавление файла, а затем возврат обратно gitignore. Я чувствую себя немного хакером
.gitignore
файле!
, например,!dont/ignore/this/file
)..gitignore
(скажем, добавить.gitignore
в ту же папку, что и DLL, или выше, или что-то)?Ответы:
Смотрите
man git-add
:Так что запустите это
источник
echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # works
(не могу вставить новые строки в комментарии, выполнить команды 1 за 1Несмотря на рабочее решение Даниэля Бёмера, Охад Шнайдер предложил лучшее решение в комментарии:
Если файл обычно игнорируется, и вы принудительно добавляете его - его можно случайно снова проигнорировать в будущем (например, когда файл удален, выполняется фиксация и файл создается заново).
Вы должны просто проигнорировать это в файле .gitignore следующим образом: Unignore подкаталоги игнорируемых каталогов в Git
источник
.gitignore
использовании!specific-file-name.txt
без иерархии папок, таким образом, отслеживание будет следовать за файлом вокруг репо.Другим способом достижения этого будет временное редактирование файла gitignore, добавление файла, а затем возврат обратно gitignore. Я чувствую себя немного хакером
источник