@zzmaster

GIT — как удалить файлы (кроме игнорируемых) из сторонней папки?

Ну не знаю, может, я много хочу, (гит вон даже не озаботился слежением за пустыми папками..)
Итак, я хочу сделать clone в тестовую папку, но перед этим очистить ее от предыдущего содержимого. Но, поскольку при clone не передаются файлы, заданные через gitignore, то оная очистка не должна затронуть эти файлы.

Такое возможно?
  • Вопрос задан
  • 641 просмотр
Решения вопроса 1
@zzmaster Автор вопроса
В общем, тут проблема из того, что бывают игнорируемые файлы 2 типов
1 - например конфиги с доступами к базе
2 - всякий технических мусор типа кэшей, логов

При деплое надо в таргет папке сохранить первые и удалить вторые.
У гита нет файла типа
.gittrash
cache/*


Решение такое
cd /path/to/target
git clean -d -f -x --exclude=/path/to/config.php --exclude=/path/to/onemorefile.php
git clone /repo.git .git-i-hate-you
\cp -rf .git-i-hate-you/. .
\rm -rf .git-i-hate-you

зачем слеши? алиасы данных комманд как правило с флагом -i
Предполагается, что как минимум одно клонирование в папку уже было сделано.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
index0h
@index0h
PHP, Golang. https://github.com/index0h
По идее вы ищите это
git clean -fd
Ответ написан
xtala
@xtala
Постигает Дзен
мне надо удалить файлы, известные гиту, созранив те, что определены через gitignore

git rm "globe шаблон"
Команда rm поддерживает глоб-шаблоны такие же как в файле .gitignore. За подробностями о глоб-шаблонах в гугл.
Пример :
$ git rm *.log
Команда удалит все файлы с расширением log из текущего каталога.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы