에러
ERROR: missing Change-Id in message footer
[remote rejected] HEAD -> refs/for/master (commit : missing Change-Id in message footer)
원인
Gerrit 에서 커밋 메세지에 Change-Id 작성을 강제화하도록 설정되어 있음.
해결 방법
Message에 change-id를 자동으로 생성하는 hook 을 설치하거나, Gerrit 설정을 변경하여야 한다. 아래 세가지 방법 중 상황에 맞는 방법을 선택하여 해결한다.
1. change-id를 자동으로 생성하는 hook 을 설치
에러 메세지가 뜰때 Hint 가 같이 나온다. Hint 에 나오는 명령어 두개를 순차적으로 입력 후 다시 Gerrit에 push 하면 해결 된다.
$gitdir=$(git rev-parse --git-dir); scp -p -P <PORT> <GERRIT>:hooks/commit-msg ${gitdir}/hooks/
$git commit --amend --no-edit
$git push origin HEAD:refs/for/master
2. Git clone with commit-msg hook
처음 git clone 명령어 사용시 아래 명령어로 commit msg hook 을 같이 clone 할 수 있다.
<clone>
$ git clone <GERRIT_SERVER>/<PROJECT>
<clone with commit-msg hook>
$ git clone <GERRIT_SERVER>/<PROJECT> && scp -p -P <GERRIT_PORT> <GERRIT_SERVER>:hooks/commit-msg <PROJECT>/.git/hooks/
3. Gerrit 의 설정 변경
Gerrit 설정에서 Commit Message 에 Change-Id가 없어도 push 할 수 있도록 설정한다. 이때에는 커밋 push 시 Gerrit 자체에서 메세지에 Change-Id를 생성해준다.
Gerrit - Browse - Repositories 클릭 -> All-Projects 클릭 (특정 Project 만 적용할 수도 있다.)
Repository Options 에서 Require Change-Id in commit message 를 True에서 False로 설정.
'Hello World > Troubleshooting' 카테고리의 다른 글
[ERROR] java: illegal character: '\ufeff' (0) | 2022.04.14 |
---|---|
[삼성 패스 오류 해결] samsung pass를 일시적으로 사용할 수 없습니다. 나중에 다시 해보세요. (255) 에러 (1) | 2021.03.05 |
[Android] Build sandboxing disabled due to nsjail error. This may become fatal in the future. (0) | 2021.01.20 |
Java 에러 - Unsupported major.minor version 58.0 (0) | 2020.12.16 |
댓글