Как git rm файл, содержащий *

В результате случайного ввода я получил файл в репо, заканчивающийся символом *. Я использую Баш.

Назовем файл "bin/abc*". Также есть файлы bin/xyz и другие, начинающиеся с bin/abc, такие как bin/abc1 и bin/abc2.

Я пробовал целую кучу тактик, в том числе:

  1. $ git rm bin/abc\*, который удаляет все другие файлы, но не "bin/abc*";
  2. $ git rm bin/abc[*], который удаляет все другие файлы, но не "bin/abc*";
  3. $ git rm bin/abc\\*, который не распознает файлы;
  4. $ git rm bin/abc[^a-z], который не распознает файлы;
  5. "git rm "bin/abc*", который удаляет все другие файлы, но не "bin/abc*";

У меня закончились идеи.


person Matt Wilson    schedule 15.06.2020    source источник
comment
Напомнил мне типичный вопрос новичка в Unix: как удалить файл с именем -rf, используя только rm? Если нельзя запустить rm -rf, то что? rm ./-rf ! :-)))   -  person phd    schedule 15.06.2020


Ответы (1)


Предполагая, что файл отслеживается, поместите имя файла в кавычки, например.

git rm "bin/abc*"

Если он не отслеживается, используйте rm вместо git rm:

rm "bin/abc*"
person Chris    schedule 15.06.2020
comment
Спасибо, но увы, нет. То же, что и 1 и 2. Однако мой вопрос будет обновлен в этом случае. - person Matt Wilson; 15.06.2020
comment
Вы полностью уверены, что файл называется bin/abc*? Это должно сработать. - person Chris; 15.06.2020
comment
Этот файл отслеживается? git rm работает только с отслеживаемыми файлами. Если это не так, попробуйте просто rm "bin/abc*". - person Chris; 15.06.2020
comment
@MattWilson, я добавил вторую версию на случай, если файл не отслеживается. Цитирование определенно должно работать. - person Chris; 15.06.2020
comment
Всем привет, да, трек отслеживается. Он не называется abc*, конечно, намного длиннее, но, по сути, то, что я показал, правильно указывает, что там есть, то есть количество отслеживаемых файлов, все из которых разделяют первую часть потока, и все, кроме одного, нормальный и один, который заканчивается со шлепком. - person Matt Wilson; 15.06.2020
comment
Я просто сделал git rm * для всего каталога, затем сбросил и проверил все файлы, которые я не хотел rm, и таким образом избавился от него. Затем я зафиксировал, затем сделал новую ветку и добавил обратно имя файла-оскорбителя, затем последовал вашему совету - git rm "bin/abc*" - и на этот раз это работает. Подозреваю ошибку оператора... - person Matt Wilson; 15.06.2020