Как я могу удалить файлы, говоря: "старый режим 100755 новый режим 100644" от неиндексированных изменений в Git?
по какой-то причине, когда я изначально сделал pull из репозитория для моего проекта git,
У меня есть тонна файлов в моей рабочей копии, которые не имеют заметных изменений, внесенных в них, но продолжают появляться в моем unstaged changes зона.
Я использую Git Gui на Windows xp, и когда я иду, чтобы посмотреть на файл, чтобы увидеть, что изменилось.
Все что я вижу это:
old mode 100755
new mode 100644
кто-нибудь знает, что это значит?
Как я могу получить эти файлы из моего списка неиндексированных изменений? (Очень раздражает, чтобы пройти через 100 файлов, просто чтобы выбрать файлы, которые я недавно редактировал и хочу зафиксировать).
7 ответов:
это похоже на режимы разрешений файлов unix для меня (
755=rwxr-xr-x,644=rw-r--r--) - старый режим включал флаг +x (исполняемый), новый режим-нет.ответы на этот вопрос msysgit предлагает установить ядро.filemode к false, чтобы избавиться от проблемы:
git config core.filemode false
настройки ядра.filemode в false работает. Но вы должны убедиться, что настройки в~/.gitconfig не будет переопределен теми, кто находится внутри .git / config.
я столкнулся с этой проблемой при копировании репозитория git с рабочими файлами со старого жесткого диска пару раз. Проблема связана с тем, что владелец и разрешения изменились со старого диска/машины на новый. Короче говоря, выполните следующие команды, чтобы исправить ситуацию (благодаря этому ответу суперпользователя):
sudo chmod -R -x . # remove the executable bit from all filesпрежняя команда фактически разрешит различия, о которых сообщил git diff, но отменит ваш возможность перечислить каталоги, так что
ls ./выдаетls: .: Permission denied. Чтобы исправить это:sudo chmod -R +X . # add the executable bit only for directoriesплохая новость заключается в том, что если у вас есть какие-либо файлы, которые вы хотите сохранить исполняемый файл, например
.shскрипты, вам нужно будет вернуть их. Вы можете сделать это с помощью следующей команды для каждого файла:chmod +x ./build.sh # where build.sh is the file you want to make executable again
вы могли бы попробовать git reset --hard HEAD чтобы сбросить РЕПО в ожидаемое состояние по умолчанию.
Кажется, вы изменили некоторые разрешения каталога. Я сделал следующие шаги, чтобы восстановить его.
$ git diff > backup-diff.txt ### in case you have some other code changes $ git checkout .
это происходит, когда вы вытаскиваете и все файлы были исполняемыми в удаленном репозитории. Если вы снова сделаете их исполняемыми, все снова станет нормальным.
chmod +x <yourfile> //For one file chmod +x folder/* // For files in a folderвы должны:
chmod -x <file> // Removes execute bitвместо этого для файлов, которые не были установлены как исполняемые и которые были изменены из-за вышеуказанной операции. Есть лучший способ сделать это, но это просто очень быстрый и грязный исправить.
у меня был только один неприятный файл с измененными разрешениями. Чтобы откатить его по отдельности, я просто удалил его вручную с помощью
rm <file>а затем сделал проверку, чтобы вытащить новую копию.к счастью, я еще не поставил его.
Если бы я это сделал, я мог бы бежать
git reset -- <file>передgit checkout -- <file>
Comments