#git
#git
Вопрос:
У меня есть проект Android, в котором есть тестовый модуль, который удаляет и воссоздает файлы .apk в подкаталоге в каталоге git.
Я добавил их в .gitignore (каталог, файлы явно и * .apk ), а затем я сделал
git rm -r --cached src/main/Tests/bin
и git говорит мне:
rm 'src/main/Tests/bin/Tests-debug-unaligned.apk'
rm 'src/main/Tests/bin/Tests-debug.apk'
rm 'src/main/Tests/bin/Tests.ap_'
rm 'src/main/Tests/bin/classes.dex'
затем я
git commit . -m "removed apk files"
Я снова запускаю тесты, которые удаляют файлы и воссоздают их. Я запускаю git status, и они отображаются как измененные. Кажется, .gitignore не работает. Вот мой файл .gitignore
*ipr
*iml
*iws
.gitignore
out/
*apk
src/main/Tests/bin
src/main/Tests/bin/*
src/main/Tests/bin/Tests-debug-unaligned.apk
Комментарии:
1. это потому, что вы не добавили их в .gitignore после их удаления?
Ответ №1:
Я думаю, вам нужно очистить все ваши поэтапные файлы, используя:
git rm -r --cached .
git add -A
Затем зафиксируйте:
git commit -m ".gitignore"
Но убедитесь, что вы зафиксировали свои изменения, прежде чем делать это.
Ответ №2:
Я только что попробовал ваш рецепт, и он сработал для меня.
~ % mkdir deleteme
~ % cd deleteme
~/deleteme % mkdir src src/main src/main/Tests src/main/Tests/bin
~/deleteme % touch src/main/Tests/bin/blah.apk
~/deleteme % git init
Initialized empty Git repository in /Users/sri/deleteme/.git/
~/deleteme (master*) % touch src/main/hello.txt
~/deleteme (master*) % git add .
~/deleteme (master*) % git commit -m "init"
[master (root-commit) 0ef5764] init
0 files changed, 0 insertions( ), 0 deletions(-)
create mode 100644 src/main/Tests/bin/blah.apk
create mode 100644 src/main/hello.txt
~/deleteme (master) % vi .gitignore
~/deleteme (master) % git rm -r --cached src/main/Tests/bin
rm 'src/main/Tests/bin/blah.apk'
~/deleteme (master*) % git commit -m "removed"
[master 5ca6456] removed
0 files changed, 0 insertions( ), 0 deletions(-)
delete mode 100644 src/main/Tests/bin/blah.apk
~/deleteme (master) % touch src/main/Tests/bin/blah.apk
~/deleteme (master) % git status
# On branch master
nothing to commit (working directory clean)
~/deleteme (master) %
Возможно, gitconfig в каком-то другом каталоге (или глобальной директиве), который переопределяет то, что у вас есть в gitconfig, который вы указали. Вы не упомянули, где находится этот gitconfig . Смотрите справочную страницу для gitignore или документы онлайн-справки для определения приоритета различных местоположений, в которых вы можете указать правила игнорирования. Страницы руководства говорят…
… следующий порядок приоритета, от самого высокого до самого низкого (в пределах одного уровня приоритета последний соответствующий шаблон определяет результат): Шаблоны считываются из командной строки для тех команд, которые их поддерживают.
o Patterns read from a .gitignore file in the same directory as the path, or in any parent directory, with patterns in the higher level files (up to the toplevel of the work tree) being overridden by those in lower level files down to the directory containing the file. These patterns match relative to the location of the .gitignore file. A project normally includes such .gitignore files in its repository, containing patterns for files generated as part of the project build. o Patterns read from $GIT_DIR/info/exclude. o Patterns read from the file specified by the configuration variable core.excludesfile
Ответ №3:
вы пробовали просто
*.apk
в вашем .gitignore? Если они отслеживались ранее, вам нужно будет удалить их и зафиксировать это перед установкой .gitignore . Как только они закончатся, добавьте запись в файл .gitignore, и она должна работать.
Комментарии:
1. я фиксирую удаление файлов. Я знаю, что тогда это «должно сработать», однако это не так.
2. * apk, а также каталог, в котором они находятся, и один абсолютный путь только для хорошей оценки, тот же результат
3. очистите файл .gitignore, чтобы в нем не было записей .apk. Фиксация. Удалите файлы apk. git add -A и фиксация. Просто добавьте * .apk в игнорируемый файл. фиксация. теперь вы должны правильно игнорировать файлы. Вы можете объединить всю эту работу по очистке в один коммит, выполнив сброс git -soft head ~ 3 amp;amp; git add -A amp;amp; git commit -m «исправлено игнорирование»