Как я могу удалить файлы, говоря: "старый режим 100755 новый режим 100644" от неиндексированных изменений в Git?



по какой-то причине, когда я изначально сделал pull из репозитория для моего проекта git,
У меня есть тонна файлов в моей рабочей копии, которые не имеют заметных изменений, внесенных в них, но продолжают появляться в моем unstaged changes зона.



Я использую Git Gui на Windows xp, и когда я иду, чтобы посмотреть на файл, чтобы увидеть, что изменилось.
Все что я вижу это:



old mode 100755  
new mode 100644


кто-нибудь знает, что это значит?



Как я могу получить эти файлы из моего списка неиндексированных изменений? (Очень раздражает, чтобы пройти через 100 файлов, просто чтобы выбрать файлы, которые я недавно редактировал и хочу зафиксировать).

921   7  

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

    Ничего не найдено.