Git "치명적: 저장소에서 모호한 소유권이 감지되었습니다."

Git "치명적: 저장소에서 모호한 소유권이 감지되었습니다."
Description:    Ubuntu 22.04.1 LTS
Release:        22.04

사용자 아래에서 일부 git 명령을 cron하려고 하는데 www-data작동하지 않습니다.

문제를 해결하기 위해 실행을 시도했지만 sudo -u www-data git show반환됩니다.fatal: detected dubious ownership in repository

내가 실행하면 sudo -u www-data git diff --shortstat반환됩니다.warning: Not a git repository. Use --no-index to compare two paths outside a working tree

나는 또한sudoers

www-data ALL=(ALL) NOPASSWD: /usr/bin/git show

# and also

www-data ALL=(ALL) NOPASSWD: /usr/bin/git

여전히 같은 오류가 발생합니다. 이유가 무엇인가요? 감사합니다.

답변1

Git에서는 현재 사용자가 파일의 소유자여야 하며, 현재 사용자가 그룹의 "구성원"인 경우에는 작동하지 않습니다.

.git다음에 속하는 파일의 경우user1:group1

  • Git은 다음과 같은 경우 오류를 발생시키지 않습니다.user1
  • 다음과 같은 경우 Git에서 오류가 발생합니다.user2:group1

솔루션 1(최상)

이는 자동화/크론이므로 실행할 사용자 앞에 접두사를 붙이는 것이 더 쉽습니다. git 명령 앞에 사용자를 지정하십시오.

sudo -u <user> git ...

솔루션 2

user모든 저장소를 의 저장소 에 추가해야 하기 때문에 약간 더 번거롭고 .gitconfig여기에 매우 자세한 답변이 있습니다.https://stackoverflow.com/a/73100228/3872647

[safe]
    directory = <real path of git repository, symlink won't work here>

이것이 충분히 명확하기를 바랍니다. 그렇지 않은 경우 질문하거나 의견을 보내 주시면 이 답변을 수정하겠습니다.

답변2

"git에서는 현재 사용자가 파일의 소유자여야 합니다"에 대해 +1

  • 내 현재 자식 버전은 2.43.1이고 이 오류 메시지는 ?.?.?부터 새로운 것입니다.
  • safe.directories 설정은 아무것도 하지 않았습니다
  • 내가 사용하고 있는 스크립트는 sudo -u www-data bash -c '...'실제로 최소한 .git과 어린이를 소유해야 한다는 것을 알았습니다.www-data

답변3

그래서 사용자 폴더에서 .gitconfig 파일( 과 같아야 함 /home/your_user/.gitconfig)을 편집하고 다음을 삽입하면 오류 가 더 이상 나타나지 않는다는 것을 알았습니다.
[safe]
directory = /path/to/directory

fatal: detected dubious ownership in repository

관련 정보