Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Как сделать что бы не коммитился уже созданный файл

#git


Есть файл который изменяется постоянно при работе самого приложения и его коммитить
не нужно. Как сделать чтоб он не коммитился? .gitignore не вариант, так как файл уже
создан. 
    


Ответы

Ответ 1



Предположим, что у Вас имеется следующая папка с файлами (репозиторий) и некоторое количество коммитов: Вы обнаруживаете, что в репозитории лежит файл который совершенно не нужен в проекте. Исправляем ошибку Ситуация №1. Ненужный файл уже в коммите Вам потребуется сначала удалить файл из коммитов. Выполняем команду: git filter-branch --tree-filter 'rm -f NOOOO.cpp' HEAD Ссылка на оригинал ответа. Ситуация №2. Ненужный файл в состоянии stage Вы выполнили комманду git add * (например) и весь репозиторий оказался в состоянии stage. Команда git status покажет какие файлы в каком состоянии находятся. В этой ситуации необходимо выполнить git rm --cached NOOOO.cpp или git reset NOOOO.cpp. После выполнения команды получим следующий результат: Ситуация №3. Ненужный файл в был создан но не попал в поле зрения git В этой ситуации Вам нужно перейти к следующему пункту :). Избегаем будущих ошибок Теперь мы избавились от ненужного файла в коммитах существующих или в области stage. Нужно теперь сделать так, чтобы гит не "видел файл". Создаем .gitignore (на win можно создать через .gitignore.). добавляем в него следующую строку и сохраняем: NOOOO.cpp Теперь нужно, чтобы git проиндексировал gitignore. для этого занесем его в новый коммит: git add .gitignore git commit -m "gitignore" После этого git будет сообщать, что новых файлов нету: Успешных коммитов!

Ответ 2



Если вы хотите прекратить отслеживать изменения в каком-либо файл в репозитории git, но файл .gitignore по каким-либо причинам не подходит — например, файл является довольно специфическим для конкретного проекта и на других компьютерах не возникает (скажем, временные тестовые файлы, полезные только единственному участнику), можно воспользоваться файлом .git/info/exclude. Он должен находиться в скрытом внутреннем каталоге git'а, его синтаксис и семантика точно такая же, как и у gitignore. Единственное различие — он является локальным для репозитория, его содержимое видно только его владельцу. Ещё есть глобальная версия этого файла. Она используется для всех репозиториев пользователя и по умолчанию находится в ~/.config/git/ignore (путь можно изменить настройкой core.excludesFile). Тут целесообразно указывать временные файлы вашей любимой IDE, как пример. Подробнее про обработку всех подобных файлов: классического .gitignore, а так же вышеупомянутых .git/info/exclude и ~/.config/git/ignore — смотрите руководство gitignore(5). Там же описаны все вариации именования этих файлов.

Комментариев нет:

Отправить комментарий