2010-04-27 4 views
12

У меня есть проект веб-сайта, который содержит более 50 000 неважных файлов (для разработки) в некоторых каталогах.Git игнорировать удаленные файлы

/website.com/files/1.txt 
/website.com/files/2.txt 
/website.com/files/3.txt 
/website.com/files/etc.txt 

Вложения/файлы уже находятся в репо. Я хочу удалить все файлы в/files на моей локальной копии, но я хочу, чтобы git игнорировал его, чтобы он не удалял их, когда я делаю попытку на веб-сервере.

Любые идеи?

ответ

1

Ok Ive нашел решение. Просто создайте новое репо в подкаталогах, и родительское репо проигнорирует их.

+1

, который будет работать, но это не идеальный вариант, чтобы в итоге получить кучу ветвей/репозиторий в нескольких проектах. продвижение вперед может стать болью, поскольку ваш список проектов станет больше. Я рекомендую стать более знакомым с '.gitignore' и инструментами управления индексами. В моем ответе вы найдете достойный учебник. Это действительно довольно легко, как только вы попробуете его однажды ... – MaurerPower

+0

@MaurerPower, хотя я ценю ваш описательный ответ, 'git rm --cached' не соответствует моим требованиям. Например, если я использую эту команду, то зафиксируйте и нажмите. Когда я вытаскиваю на другой сервер, он все равно удаляет файлы с этого сервера, даже если он не удаляет их с исходного сервера. Я сделал тест litte, вот мои результаты: http://pastebin.com/5X0t1KGs – Petah

2

Создание суб-репо является одним из решений, но вы должны сделать это под-репо submodule.

Таким образом:

  • вы держите связь между нормальным содержанием и содержанием «файлы»
  • , если содержимое «Файлы» эволюционирует в один прекрасный день, вы можете зарегистрировать свою эволюцию в главном репо
  • вы можете оформить ваш главный репозиторий без «git submodule update» (то есть без заполнения «» files содержания
  • на развертывании, git submodule update после git submodule init будет достаточно, чтобы получить обратно ри ght версия 'files'.
6

Приведенный ниже код работает на удаленных, а также измененные файлы, чтобы игнорировать его, когда вы делаете статус в GIT.

git update-index --assume-unchanged dir-im-removing/ 

или конкретный файл

git update-index --assume-unchanged config/database.yml 

Ignore modified (but not committed) files in git?

Осторожно: Предложение выше для удаленных файлов, когда вы делаете "мерзавца совершить -am" включает в себя удаленный файл!

Решение, которое будет работать для меня, заключается в том, чтобы вместо удаления файла просто сделать его содержимым пустым. Это то, что я использовал для отключения файла .htaccess.

10

Игнорирование целого каталога не сработало. Я должен был это сделать:

for i in `git status | grep deleted | awk '{print $3}'`; do git update-index --assume-unchanged $i; done 
+2

Мне нужно было изменить '$ 3' на' $ 2' git version 2.3.2 – crizCraig

Смежные вопросы