#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
. Глупая оплошность.