Program Tip

git이 특정 반환 오류 코드를 반환합니까?

programtip 2020. 10. 19. 12:34
반응형

git이 특정 반환 오류 코드를 반환합니까?


병합 오류 또는 rebase 오류와 같습니다. 고유 한 오류 코드가 있습니까?


실패하도록 테스트를 설정했습니다. 이것이 내가 얻은 것입니다.

$ git merge newbranch
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.

$ echo $?
1

Git은 0예상대로 올바르게 병합되면 반환 됩니다.


요컨대, 아닙니다. 오류의 경우 종료 코드 1, 성공의 경우 0이 표시됩니다.

소스를 빠르게 살펴보면 특정 목적 (명령을 찾을 수 없음, 오류가 이미보고 됨)에 대해 예상되는 127 및 128 개 중 일부가 있고 몇 군데에 몇 가지 비정상적인 코드가 있지만 밀 오류의 경우에는 모든 exit(1).


git statusgit이 아닌 저장소에서 실행 하면 1이 아닌 128이 반환되므로 git 저장소가 있는지 여부를 빠르게 확인하는 데 도움이됩니다.


git의 오류 메시지가없는 오류 128은 "예기치 않은 문제"에 대한 포괄적 일 수 있습니다.

git checkout -- myfile다른 사용자가 .git 아래의 파일을 수정해야하는 작업 (예 : 수정 된 파일을 되돌리려면 " ")에 대해이 문제가 발생했습니다 . (제 경우에는 " chmod -R og+w .git"이 (가) 고쳤습니다. 당연히 귀하의 사례에 대한 보안 영향을 이해하지 않는 한 그렇게하지 마십시오!)


git push --delete origin a_remote_tag_name

태그가 git 버전을 사용하지 않는 경우 256을 반환합니다. 1.8.3.1

각 명령에 의해 반환되는 특정 반환 코드와 그 표시에 대한 통합 목록이 있으면 좋을 것입니다. 이는 또한 리턴 코드 의미 (자동화 스크립트가 의존 할 수있는) 변경을 방지하는 데 도움이 될 수 있습니다.


Git 2.24 (2019 년 4 분기)는 git명령이 코드를 반환 하는 방법을 보여줍니다 .

참조 50094ca 커밋 , c1a6f21 커밋 , 854b5cb 커밋 , dd2b6b6 커밋 , 6bd26f5 커밋 , c6ec6da 커밋 , f2e2fa8 커밋 , 460609c 커밋 , 92014b6 커밋 , 0ab74e9 커밋 , cb46c40 커밋 , b562a54 커밋 (2019 8월 27일을), 및 fe49814 커밋 (2019 8월 20일를) 작성자Denton-L : Denton Liu ( ) .
( Junio ​​C gitsterHamano의해 병합 -- 커밋 1c6fc94 , 2019 년 9 월 30 일)

t4014 : git 명령의 반환 코드 손실 중지

현재 Git 명령의 반환 코드가 손실되는 두 가지 방법이 있습니다.

첫 번째 방법은 명령이 파이프의 업스트림에있을 때입니다. 파이프에서는 마지막 명령의 리턴 코드 만 사용됩니다. 따라서 다른 모든 명령에는 반환 코드가 마스킹됩니다.
업스트림에 Git 명령이 없도록 파이프를 다시 작성하십시오.

다른 방법은 명령이 비 할당 서브 쉘 에있을 때 입니다.
반환 코드는 주변 명령을 위해 손실됩니다.
Git 명령이 파일로 출력하고 주변 명령이 Git이 아닌 명령으로 만 서브 쉘을 호출하도록 인스턴스를 다시 작성하십시오.

따라서 작성하는 대신 :

git cat-file commit rebuild-1 | grep "^Side .* with .* backslash-n"

유형:

git cat-file commit rebuild-1 >actual &&
    grep "^Side .* with .* backslash-n" actual

참고 URL : https://stackoverflow.com/questions/4917871/does-git-return-specific-return-error-codes

반응형