source

Git에서 분기의 해시를 찾는 방법은 무엇입니까?

ittop 2023. 8. 20. 12:39
반응형

Git에서 분기의 해시를 찾는 방법은 무엇입니까?

로컬/원격 지점 이름을 지정하면 이 지점이 가리키는 커밋의 해시를 어떻게 가져올 수 있습니까?

명령어는 친구입니다. 예:

$ git rev-parse development
17f2303133734f4b9a9aacfe52209e04ec11aff4

또는 원격 감지 분기의 경우:

$ git rev-parse origin/master
da1ec1472c108f52d4256049fe1f674af69e785d

이 명령은 일반적으로 지점 이름을 지정하는 모든 방법을 구문 분석할 수 있기 때문에 매우 유용합니다.git예:

git rev-parse master~3
git rev-parse HEAD@{2.days.ago}

...기타.

Git 2.19 (2018년 2분기) 이후, Git은 SHA1 해시에서 SHA2로의 전환을 준비하고 있다는 것을 잊지 마십시오. "왜 Git은 더 현대적인 SHA를 사용하지 않습니까?"를 참조하십시오.

Git 2.25(2020년 1분기)를 사용하여 가능한 새로운 해시를 발전시키고 반영합니다.

커밋 fa26d5e, 커밋 cf02be8, 커밋 cf02be8, 커밋 38e26b, 커밋 37ab8eb, 커밋 0370b35, 커밋 0253e12, 커밋 45e2ef2, 커밋 79b0edc, 커밋 840624f, 커밋 32a6707, 커밋 440bf91, 커밋 0e408c, 커밋 2eabd38(2019년 10월 28일), 커밋 51, 커밋 49b(2019년 10월 5일)을 참조.bk2204
(주니오 C 하마노에 의해 합병 -- -- 28014c1, 2019년 11월 10일 커밋)

rev-parsea를 추가합니다.--show-object-format선택

사인 오프 바이: 브라이언 칼슨.

입력, 출력 또는 저장에 사용되는 개체 형식을 인쇄하는 옵션을 추가합니다.
이를 통해 셸 스크립트가 사용 중인 해시 알고리즘을 검색할 수 있습니다.

전환 계획은 여러 개의 입력 알고리즘을 허용하므로 입력에 여러 개의 결과를 제공할 수 있음을 문서화하고 결과가 취할 수 있는 형식을 지정합니다.
현재는 이를 지원하지 않지만, 초기에 문서화하면 스크립트 작성자가 언제 스크립트를 사용할지 미래에 대비할 수 있습니다.

이제 설명서에는 다음이 포함됩니다.

--show-object-format[=(storage|input|output)]:

내부 저장소에 사용되는 개체 형식(해시 알고리즘) 표시.git디렉터리, 입력 또는 출력.입력의 경우 공백으로 구분하여 여러 알고리즘을 인쇄할 수 있습니다.지정하지 않으면 기본값은 "스토리지"입니다.


Git 2.29(2020년 4분기)를 사용하면 분기(또는 다른 개체)의 해시 커밋을 읽기 위해 사용해야 하는 형식을 확인할 수 있습니다.

commit 023ff0, commit 562, commit 8a06d56, commit c49fe07, commit 02a32db, commit aa4b3, commit eff45da, commit b5b46d7, commit c5aecfc, commit 74b606, commit 439d3a1, commit 6commit 637commit 637commit 6, 831279da, commit 8, commit 8, commit 8, commit 8, commit 6e, ce0b2, commit a5587b8, commit 66b6d43, commit 2197f87, commit c0b65e, commit 62607d, commit 482c23, commit 866be6e, commit 4b6d, commit 252a4e, commit 368f3cb1, commit ab5d1, commit 11b661, commit 9e, commit 927b8d, commit bce, commit bc, commit bc,bk2204 commit
Johannes Schindelin()dscho의 커밋 800e6a7(2020년 7월 29일)을 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- 2020년 8월 11일 위원회 0ad957에서)

docs문서 추가extensions.objectFormat

사인 오프 바이: 브라이언 칼슨.
리뷰어: 에릭 선샤인

문서화합니다.extensions.objectFormat구성 설정.
사용자에게 직접 수정하지 말라고 경고합니다.

git config이제 관리 페이지에 다음 항목이 포함됩니다.

extensions.objectFormat

사용할 해시 알고리즘을 지정합니다.

은 허되는 다같습 다니과입니다.sha1> 및 >sha256.
지정되지 않은 경우sha1를 가정합니다.
▁unless가 아니면 이 키를 지정하는 것은 오류입니다.core.repositoryFormatVersion1입니다.

은 이설은다사설정합야니다해만용자음정▁be합다니에 의해서만 설정되어야 합니다.git init또는git clone.
초기화 후 변경하려고 하면 작동하지 않고 진단하기 어려운 문제가 발생합니다.


Git 2.29(2020년 4분기)를 사용하여 최근 추가된 SHA-256 지원은 문서에서 실험적인 것으로 표시되어 있습니다.

마틴 오그렌()none의 커밋 ff233d8(2020년 8월 16일)을 참조하십시오.
(주니오 C 하마노에 의해 합병 ---- 2020년 8월 24일 1ff741로 커밋됨)

Documentation마크를--object-format=sha256

사인 오프 바이: 마틴 오그렌

eff45daab8 이후("repository기본적으로 SHA-256 지원 사용", 2020-07-29, Git v2.29.0 -- 배치 #6에 나열된 병합), 바닐라 Git 빌드를 사용하면 사용자가 실행할 수 있습니다.

git init --object-format=sha256  

그리고 해킹을 합니다.
를 들어 SHA-256을 사용하는 세계에 수 좋은 이 될 수 . 예를 들어, 다음과 같은 버그를 찾을 수 있습니다.

GIT_TEST_DEFAULT_HASH=sha256 make test  

발견되지 않습니다.

하지만 실제로는 별개의 세계입니다.이러한 SHA-256 저장소는 SHA-1 저장소 세트(현재는 상당히 큰 규모)와는 완전히 별개로 존재합니다.
국경을 넘어 상호 작용하는 것은 원칙적으로 가능합니다. 예를 들어 "를 통해"diff+apply(또는 "format-patch+am ) 하지만그한계있가습니다마도저있▁"다습니"),한:),ations▁but▁even.를 적용하는 , 당신이 SHA-256에 , SHA-256은 SHA-256과 같은 입니다.-3당신은 운이 없습니다.

" 찬가지로마▁","push+pull작동해야 하지만, 당신은 정말로 나머지 세계와 대부분 상쇄되는 상태로 운영될 것입니다. 수 그 후 몇달 수도 , 여러분이이 올 .[ --object-format init --object-format=sha256](https://github.com/git/git/blob/ff233d8dda12657a90d378f2b403bc6c85838c59/Documentation/git-init.txt#L52)<sup>([man](https://git-scm.com/docs/git-init#Documentation/git-init.txt---object-formatltformatgt))</sup>꽤나 깊은 구멍에 몸을 파 넣었습니다.

현재 SHA-256과 관련된 데이터 형식과 프로토콜을 문서화하기 위해 진행 중인 주제가 있으며, 일부 경우(midx 및 commit-graph)에서는 파일 형식이 사용할 개체 형식을 나타내는 방법을 조정하는 것을 고려하고 있습니다.

든 ㅠㅠㅠ--object-format문서에 언급되어 있으므로 "sha256"과 함께 사용하는 것이 실험적이라는 점을 분명히 합시다.
2020년에 생성한 데이터를 처리할 수 없는 이유를 나중에 설명해야 한다면 언제든지 여기에 추가할 이 단락을 가리킬 수 있습니다.

"선택::"를 약간 흐리게 하면 설명서 전체에서 일관성을 유지할 수 있을 것이고 결국 이 텍스트의 심각성을 점차 낮출 수 있을 것입니다.
언젠가, 우리는 그것을 사용해서 단계적으로 사라지기 시작할지도 모릅니다.--object-format=sha1하지만 너무 앞서가지는 말자구요...

extensions.objectFormat세 번 밖에 언급되지 않았습니다.이 새로운 고지 사항을 추가할 때는 두 번이고 세 번째 지점에는 이미 "편집 안 함" 경고가 표시됩니다.거기서부터 관심 있는 독자들은 결국 우리가 여기에 추가할 이 새로운 것을 찾아야 합니다.

ㅠㅠGIT_DEFAULT_HASH에서는 이 기능에 대한 또 다른 진입점을 제공하며, 이 기능의 실험적 특성도 문서화합니다.

git이제 관리 페이지에 다음 항목이 포함됩니다.

대신 사용됩니다.기본값은 "sha1"입니다.이 변수는 실험적입니다! 참조--object-format…에

object-format-disclaimer이제 관리 페이지에 다음 항목이 포함됩니다.

입니다.
SHA-256 지원은 실험적이며 아직 초기 단계에 있습니다.

SHA-256 저장소는 일반적으로 > "일반" SHA-1 저장소와 작업을 공유할 수 없습니다.
예를 들어 SHA-256 저장소와 관련된 Git 내부 파일 형식이 역호환 방식으로 변경될 수 있다고 가정해야 합니다.
만 합니다.--object-format=sha256테스트 목적으로


동일한 Git 2.29 (2020년 4분기)는 SHA-1 저장소에서 복제할 때 "가 작동할 것임을 확실히 합니다.git clone(man)GIT_DEFAULT_HASHSHA-256을 이미 사용하도록 설정되었습니다.
에는 SHA-1 할 수 없게 2.29 SHA-1은 SHA-256의 저장소입니다.
수정되었습니다.

브라이언 칼슨()bk2204의 커밋 47ac970(2020년 9월 20일)을 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- commit b28919c, 2020년 9월 29일)

builtin/clone로 실패를 피합니다.GIT_DEFAULT_HASH

보고한 사람: 마테우스 타바레스
사인 오프 바이: 브라이언 칼슨.

가 SHA-1을 사용하여 GIT_DEFAULT_HASH 로설정정"로 sha256 형식 버전이 0인 저장소로 수 .extensions.objectformat가 " 가로 "로되었습니다.sha256".
이는 잘못된 것이며(사용자가 SHA-1 저장소를 가지고 있음), v0 저장소에서 확장을 사용할 수 없기 때문에) 작동하지 않습니다.

이는 복제본에서 처음에 저장소를 설정한 다음 원격 측에서 사용 중인 정보를 기반으로 해당 알고리즘을 변경하기 때문입니다.
이 경우 처음에는 저장소를 SHA-256으로 설정한 다음 나중에 확장을 지우지 않고 저장소 버전을 재설정합니다.

이 경우에는 항상 확장을 설정할 수 있지만, 이는 SHA-1 저장소가 구형 Git 버전과 호환되지 않는다는 것을 의미합니다.
또한 처음에는 저장소를 SHA-1로 초기화하지 않습니다. 즉, 빈 저장소를 복제하는 경우에는 저장소의 성능을 유지할 수 없기 때문입니다.GIT_DEFAULT_HASH변수이며 SHA-256 저장소가 아닌 SHA-1 저장소로 끝납니다.

두 가지 모두 매력적이지 않습니다. 따라서 저장소 초기화 코드를 알려줍니다. 이렇게 재실행하는 경우에는 SHA-1을 사용하는 경우에는 확장을 해제합니다.
이를 통해 유효하고 기능적인 저장소를 생성하고 다른 사용 사례를 손상시키지 않습니다.

해시는 다음과 같이 저장됩니다..git/refs/,예..git/refs/heads/master

하지만 프로그래밍 방식으로 사용합니다.git rev-parse마크 롱에어가 제안한 것처럼 안전합니다.

현재 체크아웃된 분기의 해시를 가져오는 간단한 대답은 다음과 같습니다.

git rev-parse `git branch | cut -d' ' -f2`

설명:

develop을 체크아웃했다고 가정하면,

> git 브랜치
발육시키다
> git branch | cut -d' ' -f2
발전시키다
> git rev - 'git branch' | cut -d' ' -f2'
[사용자의 해시 코드]

즐기세요 :)

언급URL : https://stackoverflow.com/questions/9110478/how-to-find-the-hash-of-branch-in-git

반응형