Giit 명령 입문: Giit 객체(update-ref, TAG) 제57회

7533 단어 GitGitHubtech
안녕하세요!이번에도 Giit 본가의 홈페이지를 참고하여 진행하겠습니다!
지난번에 경량판 라벨을 만들었기 때문에 이번에는 주석이 달린 라벨판!환경은 지난번처럼 계속 유용되었다.

지난번 제56회 보도는 여기서부터 시작!


https://zenn.dev/shiozumi/articles/53c02817b72faa

git 본가의 정보는 여기서부터 시작!


https://git-scm.com/book/ja/v2

오늘의 과제는 지난번과 마찬가지로 여기도 참고했습니다!


https://git-scm.com/book/ja/v2/Git의 내부 - Giit 참조

10.3 Giit의 내부 참조 - Giit


Giit의 참조 아래에는 태그, 태그의 설명처가 있습니다!

주석이 달린 라벨판!


$ git log --oneline
1e3f489 (HEAD -> test, origin/master, master) third commit
514ff38 second commit
8cab88d first commit <!-- ここに注釈付きタグ、v3.0

$ git tag -a v3.0 8cab88d -m 'test tag'

$ git log --oneline
1e3f489 (HEAD -> test, origin/master, master) third commit
514ff38 (tag: v2.0_short, tag: v2.0, tag: v1.0) second commit
8cab88d (tag: v3.0) first commit // <!-- ここに追加されました!

$ git tag
v1.0
v2.0
v2.0_short
v3.0
// v3.0が、追加されていますね!

주석이 있는 라벨 내용을 확인하세요!


$ cat .git/refs/tags/v3.0
c6684e1aa89d75c53a6f6aacf3b56c4316510070
// ハッシュ値ですが、8cab88d first commit とは異なります

// では、その中身をのぞいて見ると・・・
$ cat-file -p c6684e1aa89d75c53a6f6aacf3b56c4316510070
object 8cab88d049aa2c32533dd2c7aef02470d493d0ce
type commit
tag v3.0
tagger Makoto Shiozumi <[email protected]> 1616242247 +0900

test tag
  • object 8cab88d~//제출한 해시 값!
  • type commiit/속성은commiit값입니다!
  • tag v3.0/tag의 이름
  • tagger Makoto Shiozumi//창설자의 정보
  • test tag/마지막으로 댓글!
  • 경량(lightweight) 버전의 라벨이라면 파일의 내용은 제출한 해시 값만 있습니다.주석이 달린 라벨 (annotated) 버전은 제출한 해시 값이 아니라 대상의 해시 값이며, 그 내용은 위에서 말한 바와 같이 5개의 정보를 저장했다.

    그리고 Giit 문서를 읽었어요.


    Git 본사의 사이트에서 온 문서를 발췌하여 기록하시오!
    Object의 항목은 위에 표시된 제출된 SHA-1 해시 값을 가리킨다는 것을 주의하십시오.또한 이 프로젝트가 반드시 제출에만 치중하는 것은 아니라는 것을 명심하세요.모든 Giit 객체에 태그를 추가할 수 있습니다.
    모든 Giit 객체에 태그를 추가할 수 있습니다.
    즉, 제출을 제외하고 지점, 문서, 트리 등은 어쨌든 해시 값의 물건에 대해 모든 제출 값에 서명을 붙일 것 같다.읊다, 읊조리다이거 편하네~ 아니면 해시값 검색도 어렵고 절대 기억이 안 나네(대폭소) 해시값을 여러 개 보면 그것만 혼란스러워지고 숫자의 마력도 느껴져.(^▽^;)

    new.txt에 라벨을 붙여보세요!


    $ ls -a
    .  ..  .git  bak  new.txt  test.txt
    // 前回から利用しているリポジトリーには、new.txt ファイルがあります!
    
    $ cat new.txt
    new file
    // ファイルの中身を確認!
    
    $ git hash-object -w new.txt
    fa49b077972391ad58037050f2a75f74e3671e92
    // まずは、このオブジェクトのハッシュ値を求めて!
    // 先頭の2文字がディレクトリー名となり、残り38文字がファイル名
    // 以下のように、ファイルを確認できますね!
    
    $ ls .git/objects/fa/49b077972391ad58037050f2a75f74e3671e92
    .git/objects/fa/49b077972391ad58037050f2a75f74e3671e92
    // これで、ファイルの存在確認できました!
    
    $ git cat-file -p fa49b077972391ad58037050f2a75f74e3671e92
    new file
    // これで、再度、確認完了!
    
    $ git tag -a new_txt fa49b077972391ad58037050f2a75f74e3671e92 -m 'new.txt tag'
    // ハッシュ値、fa49b07~を指定して、タグ付けを実行します!
    
    $ git tag
    new_txt // <!-- 追加されていますね!
    v1.0
    v2.0
    v2.0_short
    v3.0
    
    $ cat .git/refs/tags/new_txt
    62ccb70b02c30a14a952a80064e2bf6bb1350a4f
    // ファイルの中身は、ハッシュ値!
    
    $ git rev-parse new_txt
    62ccb70b02c30a14a952a80064e2bf6bb1350a4f
    // タグ名からも、ハッシュ値を取得可能ですね!
    
    $ git cat-file -p 62ccb70b02c30a14a952a80064e2bf6bb1350a4f
    object fa49b077972391ad58037050f2a75f74e3671e92
    type blob
    tag new_txt
    tagger Makoto Shiozumi <[email protected]> 1616244834 +0900
    
    new.txt tag
    
    // object fa49b07~のハッシュ値で、さらに、cat-file!
    $ git cat-file -p fa49b077972391ad58037050f2a75f74e3671e92
    new file
    // これで、確認完了!
    

    git cat-file-p62ccb70~중략

  • object fa49b077 ~//git hash-object -w new.txt와 같은 해시 값!
  • type blogb//대상의 속성은 당연히 blogb입니다.
  • tag new_txt//태그 이름
  • tagger Makoto Shiozumi~//태그 작성자 정보
  • new.댓글 부분!
  • git rev-parse new_txt


    설명도 없이 무심코 사용했는데 사실은 처음으로 명령을 사용했다.
    $ git rev-parse HEAD
    1e3f4892a273326780b4fb8b44a5b76469b5ffa2
    // HEADのハッシュ値!
    
    $ cat .git/refs/heads/master
    1e3f4892a273326780b4fb8b44a5b76469b5ffa2
    // rev-parse でも、cat コマンドでも、同じハッシュ値を取得!
    
    $ git rev-parse test
    1e3f4892a273326780b4fb8b44a5b76469b5ffa2
    // ローカルtestブランチのハッシュ値!
    
    $ cat .git/refs/heads/test
    1e3f4892a273326780b4fb8b44a5b76469b5ffa2
    // rev-parse でも、cat コマンドでも、同じハッシュ値を取得!
    
    $ git cat-file -p new_txt
    object fa49b077972391ad58037050f2a75f74e3671e92
    type blob
    tag new_txt
    tagger Makoto Shiozumi <[email protected]> 1616246267 +0900
    
    new.txt tag
    // ハッシュ値、62ccb70 ~中略 ではなく、new_txt のタグ名指定でもOK!
    
    많이 해보면 그것 때문에 혼란스러워요. 아무래도 라벨이 해시치가 있는 대상에게 붙어요!여러분도 자신의 생각대로 자신의 생각대로 시도해 보세요!

    총결산!


    물론 라벨 대상의 내용은object 해시 값이기 때문에 해시 값을 가진 모든 대상에 라벨을 붙일 수 있습니다!해시치만 비교해 보면 솔직히 머리가 혼란스러워~~또는 해시치만 기억하는 것은 거의 힘들기 때문에 라벨 기능은 없어서는 안 될 존재다.즉, 브라우저의 책갈피처럼 URL을 저장합니다!

    그럼, 이번엔 여기까지 수고하셨습니다!


    https://zenn.dev/shiozumi/articles/2c79628bbbb042

    좋은 웹페이지 즐겨찾기