Подтвердить что ты не робот

Могу ли я сделать изменения разрешения wwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww?

Я безостановочно изменяю разрешения всего моего дерева и фиксирую это изменение только с другими изменениями содержимого.

Я использую что-то вроде:

tar -czf deploy.tar git diff --name-only v1 v2

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

Есть ли способ, которым я мог бы сказать git diff игнорировать те файлы, у которых только разрешены изменения?

4b9b3361

Ответ 1

Это будет означать git игнорировать разрешения:

git config core.filemode false

Ответ 2

У меня была эта проблема после преднамеренного удаления разрешения на выполнение из файлов исходного кода (файлы ~ 26K). Затем git diff говорит, что все файлы были изменены! Ответ с core.filemode не помогает мне, так как это влияет только на отличие от вашего рабочего каталога, а не отличается от 2 коммитов в репо.

Ответ заключался в использовании команды (большой страх) фильтрации-ветки. В частности, все, что вам нужно ввести:

git filter-branch -f --tree-filter 'find * -type f | xargs chmod 644 ' -- --all

из корня вашей рабочей директории. Конечно, обязательно сделайте копию своего репо (cp -pr ~/repo.git ~/repo-orig.git или аналогичный), если вам нужно повторить попытку.

Наслаждайтесь!

Ответ 3

Это старый вопрос, и ответ уже есть в комментариях, но:

Используйте -G<regex> опции ( "Обратите внимание на различия, чей патч текст содержит добавленные/удалённые строки, которые соответствуют <regex>.") В поисках каких - либо изменений на всех - то есть . , Изменения только для прав доступа не соответствуют этому, поэтому они игнорируются.

Итак: git diff -G.