Как запретить git commit удалять файлы
Я только что сделал git commit, и он удалил несколько файлов, казалось бы, случайно из моей папки node_modules. У кого-нибудь была эта проблема?
Чтобы было ясно, мой последний git commit удален
delete mode 100644 node_modules/grunt-google-cdn/node_modules/google-cdn/node_modules/cdnjs-cdn-data/external/cdnjs.json
delete mode 100644 node_modules/grunt-node-inspector/node_modules/node-inspector/front-end-node/Images/src/favicon.eps
delete mode 100644 node_modules/moment/min/tests.js
delete mode 100755 node_modules/requirejs/bin/r.js
Я никогда не видел этого раньше, и я не могу понять, почему это произошло. Это мешает мне создать приложение для развертывания. Кто-нибудь знает, как / почему это произошло и как это можно предотвратить в будущем?
2 ответа
Я ожидаю, что эти файлы были удалены в какой-то момент (с помощью какого механизма я не могу сказать).
Если вы используете Git 2.0 или выше, когда вы набрали git add .
Вы поставили удаленные файлы для фиксации. git add .
в основном говорит: "Я хочу внести все изменения в это репо", что в данном случае включает удаление файлов.
Поведение было другим в предыдущих версиях (я только что проверил другое поведение в отношении Git 1.9 и 2.6.3).
Я только сделал мерзавец добавить. заранее
Итак, вы попросили Git поставить все в .
(текущий каталог). Это включает в себя удаленные файлы:
например, указав
dir
будет записывать не только файлdir/file1
модифицированный в рабочем дереве файлdir/file2
добавлен в рабочее дерево, но и файлdir/file3
удалено из рабочего дерева
Если эти файлы были удалены каким-то не-git процессом, и вы впоследствии запустили git add .
и затем зафиксированные, удаления были бы зафиксированы.
Сравнение документации для версии 1.9.2 и версии 2.0.0 git-add
показывает, что это поведение изменилось в версии 2.
Чтобы указать git игнорировать удаленные файлы в коммите и зафиксировать все остальные изменения:
git add --ignore-removal .