Git вернет режим файла в 755

#git #file #file-permissions

#мерзавец #файл #права доступа к файлам

Вопрос:

Одному из наших разработчиков каким-то образом удалось изменить режим файла сценария оболочки с 755 на 644 и зафиксировать его в ветке в origin. Я бы хотел изменить его обратно на 755, но Git не будет сотрудничать. Я работаю в Linux bash, в файловой системе Linux (в WSL2).

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

 git checkout 716-confirmation-modal-dialog-when-deleting-a-form-or-a-form-field git reset --hard origin/716-confirmation-modal-dialog-when-deleting-a-form-or-a-form-field chmod 755 scripts/wait-for-it.sh git add scripts/wait-for-it.sh git push origin 716-confirmation-modal-dialog-when-deleting-a-form-or-a-form-field  

Все работает до последнего шага (толчка). Если я сделаю git status это до толчка, я получу:

 On branch 716-confirmation-modal-dialog-when-deleting-a-form-or-a-form-field Your branch is up to date with 'origin/716-confirmation-modal-dialog-when-deleting-a-form-or-a-form-field'.  Changes to be committed:  (use "git restore --staged lt;filegt;..." to unstage)  modified: scripts/wait-for-it.sh  

Толчок дает мне сообщение «Все в актуальном состоянии». После нажатия, git status говорит мне точно то же самое, что scripts/wait-for-it.sh изменено; и файл не был обновлен в origin.

Я пробовал устанавливать git config core.fileMode true .

Я также попытался изменить режим файла с помощью git update-index --chmod= x scripts/wait-for-it.sh .

git config -l дает:

 user.email=**myemail** user.name=Ben Whitmore core.autocrlf=false core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true remote.origin.url=https://gitlab.coko.foundation/kotahi/kotahi.git remote.origin.fetch= refs/heads/*:refs/remotes/origin/* branch.main.remote=origin branch.main.merge=refs/heads/main branch.716-confirmation-modal-dialog-when-deleting-a-form-or-a-form-field.remote=origin branch.716-confirmation-modal-dialog-when-deleting-a-form-or-a-form-field.merge=refs/heads/716-confirmation-modal-dialog-when-deleting-a-form-or-a-form-field  

Как я могу это исправить, или мне придется отказаться от ветки и начать все сначала?

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

1. git add добавляет его в репозиторий и перечисляет в индексе, но вы еще не сделали фиксацию, поэтому Git еще не знает, что он готов.

2. джилл означает : беги git add , git commit (, git push

Ответ №1:

Как указала Джилл, мне нужно было git commit перед моим git push . Глупая оплошность.