추적 분기란 무엇입니까?
Git에 적용되는 "추적 분기"에 대해 누가 설명할 수 있습니까?
git-scm.com 의 정의는 다음과 같습니다.
Git의 '추적 분기'는 원격 분기에 연결된 로컬 분기입니다.해당 분기를 밀고 당기면 연결된 원격 분기로 자동으로 밀고 당깁니다.
항상 동일한 업스트림 분기에서 새 분기로 풀링하고 "git pull"을 명시적으로 사용하지 않으려면 이 옵션을 사용합니다.
불행하게도, 처음이고 SVN에서 온 사람이기 때문에, 그 정의는 저에게 전혀 의미가 없습니다.
저는 "The Practical Guide to Git" (참고로, 훌륭한 책)을 읽고 있는데, 그들은 지점을 추적하는 것이 좋은 것이며, 첫 번째 리모컨(원산지, 이 경우)을 만든 후에 마스터 지점을 추적 지점으로 설정해야 한다고 제안하는 것 같습니다.그러나 안타깝게도 추적 분기가 왜 좋은 것인지 또는 마스터 분기를 원본 저장소의 추적 분기로 설정하여 어떤 이점을 얻을 수 있는지는 다루지 않습니다.
누가 저를 좀 가르쳐 주시겠습니까?
분기 추적
원격 분기에서 로컬 분기를 체크아웃하면 추적 분기라고 하는 항목이 자동으로 생성됩니다.추적 분기는 원격 분기와 직접적인 관계가 있는 로컬 분기입니다. 브랜치에 추적지있경다같음입다니력합이과우는점에다▁if니▁and입▁type합력▁you를 입력합니다.git push
Git는 푸시할 서버와 분기를 자동으로 인식합니다., 또한, 달기를 실행하는입니다.git pull
이러한 분기 중 하나에서 모든 원격 참조를 가져온 다음 해당 원격 분기에 자동으로 병합됩니다.
리포지토리를 복제하면 일반적으로 원본/마스터를 추적하는 마스터 분기가 자동으로 생성됩니다.그렇기 때문에git push
그리고.git pull
다른 인수 없이 즉시 사용할 수 있습니다.그러나 원하는 경우 다른 추적 분기(원점에서 분기를 추적하지 않고 마스터 분기를 추적하지 않는 분기)를 설정할 수 있습니다.간단한 경우는 방금 보신 예입니다. 실행 중입니다.git checkout -b [branch] [remotename]/[branch]
1 Git 버 1.6.2 이경 우는을 .--track
속기:
$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"
원격 분기와 다른 이름으로 로컬 분기를 설정하려면 첫 번째 버전을 다른 로컬 분기 이름으로 쉽게 사용할 수 있습니다.
$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "sf"
자, 당신의 지역 지점은sf
자동으로 밀고 당깁니다.origin/serverfix
.
할인: 특별 할인: 특별 할인git status
인 추적지과함께점,,▁a와 함께,git status
사용자가 추적 분기에서 얼마나 뒤떨어져 있는지 알려줍니다. 변경 내용을 아직 푸시하지 않았음을 알려주는 데 유용합니다!다음과 같이 표시됩니다.
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
또는
$ git status
On branch dev
Your branch and 'origin/dev' have diverged,
and have 3 and 1 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
다음은 GIT 추적 지점에 대한 제 개인적인 학습 노트입니다. 향후 방문자에게 도움이 되기를 바랍니다.
분기 및 "git fetch" 추적:
추적 분기는 원격 분기와 직접적인 관계가 있는 로컬 분기입니다.
정확히는 아닙니다.SO 질문 "이해하기 어려움"에는 다음이 포함됩니다.
로컬 추적 분기의 개념은 없고 원격 추적 분기만 있습니다.
보고서의 원격 추적 지점도 마찬가지입니다.
Git 2.37(Q3220)을 사용하면 다음과 같이 원격 추적 분기를 자동으로 설정할 수 있습니다.
git config --global push.autoSetupRemote true
그러나 실제로 다음과 같은 업스트림 분기 관계를 설정하면 다음과 같습니다.
- 과 같은 지방
master
- 그리고 같은 원격 추적 지점.
origin/master
다음과 같이 나열할 수 있습니다.git branch -avv
.
그렇다면 고려해 볼 수 있습니다.master
로컬 추적 분기로:원격 추적 분기를 추적합니다. origin/master
차례로 업스트림 레포의 마스터 브랜치를 추적합니다. origin
.
즉, "원격 추적 분기"에서 "원격"은 마지막으로 가져온 항목을 기억하기 위해 원격 분기의 로컬 복사본(추적)을 의미합니다.
Michael Freidgeim이 논평에서 덧붙인 것처럼:
"원격 추적 지점"이라는 용어는 혼란스럽습니다.
더 정확한 단어는 다음과 같습니다.
"잘못된 위치에 원격으로 연결된 분기"입니다.
그렇지 않으면 "원격 추적 분기"가 오리진 서버에 있다고 해석할 수 있습니다.
다음과 같이 추적 분기를 추가하여 새 분기에 연결할 수 있습니다.
git branch --set-upstream-to origin/Development new-branch
TL;DR 모든 Git 분기는 파일 집합의 기록을 추적하는 데 사용됩니다.따라서 모든 분기는 실제로 "추적 분기"가 아닙니다. 이러한 분기는 시간 경과에 따른 파일 기록을 추적하는 데 사용되기 때문입니다.
따라서 우리는 아마도 일반적인 깃을 "가지", "추적 가지"라고 불러야 할 것입니다. 하지만 우리는 그렇지 않습니다.대신에 우리는 그들의 이름을 단지 "가지"로 줄입니다.
그래서 부분적으로 "추적-가지"라는 용어가 매우 혼란스러운 이유가 있습니다. 처음 시작하지 않은 사람들에게 그것은 쉽게 두 가지 다른 것을 의미할 수 있습니다.
"추적 분기"라는 용어는 보다 완전한 용어인 "원격 추적 분기"의 짧은 이름입니다.
이런 개념에 더 익숙해질 때까지 공식적인 용어를 대체하는 것이 처음에는 더 나을 것입니다.
질문의 내용을 다음과 같이 바꿔 보겠습니다.
"원격 추적 지점"이란 무엇입니까?
여기서 핵심 단어는 '원격'이므로 혼동되는 부분으로 건너뛰면 원격 추적 분기가 무엇이며 어떻게 사용되는지 설명하겠습니다.
처음에는 매우 혼란스러울 수 있는 분기 및 추적을 포함한 GIT 용어를 더 잘 이해하려면 먼저 GIT가 무엇인지와 기본 구조를 명확하게 이해하는 것이 가장 쉽다고 생각합니다.이렇게 확실한 이해가 없다면, 저는 여러분이 많은 세부사항들에서 길을 잃을 것이라고 약속합니다. git은 많은 복잡성을 가지고 있기 때문입니다. (번역: 많은 사람들이 그것을 매우 중요한 일에 사용합니다.)
다음은 소개/개요이지만 이 훌륭한 기사도 유용할 수 있습니다.
Git란 무엇이며 용도는 무엇입니까?
Git 저장소는 가족 사진 앨범과 같습니다.그것은 과거의 상황을 보여주는 역사적인 스냅샷을 보관하고 있습니다."스냅샷"은 주어진 시간에 무언가를 기록하는 것입니다.
깃 저장소는 인간의 가족 사진을 보관하는 데 국한되지 않습니다.오히려 시간이 지남에 따라 진화하거나 변화하는 모든 것을 기록하고 구성하는 데 사용할 수 있습니다.
기본적인 생각은 우리가 쉽게 시간을 되돌아볼 수 있도록 책을 만드는 것입니다.
- 과거, 현재, 또는 시간의 다른 순간들을 비교하기 위해, 그리고
- 과거를 재현하는 것.
복잡성과 용어에 시달릴 때는 무엇보다도 깃 저장소가 스냅샷의 저장소이며 사진첩과 마찬가지로 이러한 스냅샷을 저장하고 구성하는 데 사용된다는 점을 기억하십시오.
스냅샷 및 추적
추적 - 사람이나 동물이 어딘가에 있었다는 증거를 찾아 추적(dictionary.cambridge.org )
git에서 "당신의 프로젝트"는 기록을 유지하고자 하는 파일의 디렉터리 트리(하나 이상, 하위 디렉터리를 사용하여 트리 구조로 구성된 것일 수 있음)를 의미합니다.
Git는 3단계 프로세스를 통해 특정 시점에 프로젝트 디렉터리 트리의 "스냅샷"을 기록합니다.
프로젝트의 각 Git 스냅샷은 프로젝트의 이전 스냅샷을 가리키는 "링크"에 의해 구성됩니다.
하나씩 링크를 통해 과거의 스냅샷이나 유산을 찾을 수 있습니다.
예를 들어, 오늘의 가장 최근 스냅샷으로 시작한 다음 링크를 사용하여 과거로 거슬러 올라가 사진을 찾을 수 있습니다. 아마도 어제나 지난 주, 아기였을 때, 심지어 어머니가 누구였는지 등 말입니다.
이를 "추적"이라고 합니다. 이 예에서는 여러분의 삶을 추적하거나, 여러분이 어디에 발자국을 남겼는지, 어디에서 왔는지를 보는 것입니다.
커밋
커밋은 단일 스냅샷이 포함된 사진 앨범의 한 페이지와 유사하며, 스냅샷에 포함된 스냅샷뿐만 아니라 해당 스냅샷에 대한 메타 정보도 포함됩니다.다음을 포함합니다.
- 이 커밋을 찾을 수 있는 주소 또는 고정된 장소, 페이지 번호와 유사합니다.
- 특정 시점에 프로젝트의 스냅샷 하나(파일 디렉터리 트리의 스냅샷 하나,
- 스냅샷의 내용 또는 용도를 설명하는 캡션 또는 주석
- 해당 스냅샷의 날짜와 시간,
- 누가 스냅샷을 찍었는지, 그리고 마침내,
- 하나 이상의 스냅샷을 과거의 스냅샷 또는 상위 또는 상위 스냅샷과 같은 이전의 관련 스냅샷과 연결합니다.다른 말로 하면, "링크"는 다른 오래된 내 사진의 페이지 번호에 대한 포인터나 내가 직접 부모님에게 태어났을 때의 포인터와 비슷합니다.
약속은 잘 정리된 사진첩의 가장 중요한 부분입니다.
시간이 지남에 따라 가지와 병합이 있는 가계도
구분: 여기서 "트리"는 위에서 사용한 것처럼 파일 디렉터리 트리가 아니라 시간이 지남에 따라 관련 부모 및 자식 커밋의 패밀리 트리를 나타냅니다.
깃 가계도 구조는 우리 자신의 인간 가계도를 모델로 하고 있습니다.
간단한 방법으로 링크를 이해하는 데 도움이 되는 내용은 다음과 같습니다.
- 단순한 "부모"로서의 부모-커밋, 그리고
- 단순한 "자녀" 또는 복수인 경우 "자녀"와 같은 아동 커밋.
이것은 생명의 나무에 기초하고 있기 때문에 본능적으로 이해해야 합니다.
- 부모는 한 명 이상의 아이들이 그들의 과거를 가리키고 있을 수 있고,
- 아이들은 항상 그들이 가리키는 하나 이상의 부모님을 가지고 있습니다.
따라서 완전히 새로운 커밋("청소년 커밋"이라고 할 수 있음)을 제외한 모든 커밋은 한 명 이상의 자녀가 이를 다시 지적합니다.
부모를 가리키는 자녀가 없는 상황에서, 이 약속은 "성장하는 팁"일 뿐이며, 다음 아이가 태어날 곳이 어디인지에 불과합니다.
단 한 명의 아이가 부모를 가리킨다면, 이것은 단순한 한부모 관계일 뿐입니다.
과거로 연결되는 단순한 단일 부모 체인의 선 다이어그램:
(older) ... <--link1-- Commit1 <--link2-- Commit2 <--link3-- Commit3 (newest)
나뭇가지
브랜치 - "브랜치"는 활성 개발 라인입니다.분기에 대한 가장 최근의 커밋을 해당 분기의 팁이라고 합니다.분기의 끝은 분기 헤드에 의해 참조되며, 분기에 대한 추가 개발이 수행됨에 따라 앞으로 이동합니다.단일 Git 저장소는 임의 개수의 분기를 추적할 수 있지만 작업 트리는 그 중 하나("현재" 또는 "체크아웃된" 분기)에만 연결되고 HEAD는 해당 분기를 가리킵니다. (비트 용어)
깃브랜치는 다음 두 가지를 가리키는 말이기도 합니다.
- 성장 팁, (식별자)에 부여된 이름.
- 커밋 간 링크 그래프의 실제 분기.
한 명 이상의 아이들이 --> 부모를 가리키고 있는 것이 깃이 "가지치기"라고 부르는 것입니다.
참고: 실제로 어떤 부모의 아이든, 날씨 1, 2, 3 등의 아이든, 그들만의 성장 팁을 가진 그들만의 작은 가지로 보일 수 있습니다.따라서 분기는 노드가 많은 긴 것이 아니라 주어진 부모로부터 하나 이상의 커밋으로 만들어진 작은 것입니다.
부모의 첫 번째 자식은 동일한 분기의 일부라고 할 수 있지만, 부모의 후속 자식은 일반적으로 "분기"라고 합니다.
실제로 모든 자식(첫 번째 뿐만 아니라)이 부모로부터 분기되거나 링크라고 할 수 있지만 각 링크는 실제로 분기의 핵심 부분이라고 주장합니다.
공식적으로, git "branch"는 예를 들어 foo와 같은 이름으로, 가족 계층의 특정 성장 팁에 부여됩니다.그것은 그들이 "ref"라고 부르는 것의 한 종류입니다. (나중에 설명할 태그와 리모트도 ref입니다.)
ref - refs/(예: refs/heads/master)로 시작하는 이름으로, 개체 이름 또는 다른 ref를 가리킵니다(refs/heads/master).편의를 위해 Git 명령에 대한 인수로 사용할 때 ref를 줄여서 사용할 수 있습니다. 자세한 내용은 gitrevisions(7)를 참조하십시오.참조는 저장소에 저장됩니다.
참조 네임스페이스는 계층적입니다.다른 하위 계층 구조는 다른 목적으로 사용됩니다(예: 참조/헤드/계층 구조는 로컬 분기를 나타내는 데 사용됨).ref/로 시작하지 않는 몇 가지 특수 용도의 ref가 있습니다.가장 주목할 만한 예는 HEAD입니다.(비트 용어집)
은 당신의 안에 ..git
디렉토리입니다. git 구의저장곳입는니다되조가)▁it니입)▁the는.)
예를 들어, 사용자 이름이 Tom인 경우 사용자의 스냅샷만 포함하는 서로 연결된 커밋이 "Tom"이라는 분기일 수 있습니다.
그래서 여러분이 나뭇가지를 전부 나무라고 생각할 수도 있지만, 나뭇가지는 단지 그것의 성장 팁에 붙여진 이름일 뿐이지, 그것으로 이어지는 전체 나무 막대기에 대한 이름은 아닙니다.
나무꾼(과일 나무를 자르는 사람)이 "중앙 지도자"라고 부르는 특별한 성장 팁과 그 가지가 깃이 "마스터"라고 부르는 것입니다.
마스터 분기는 항상 존재합니다.
라인 다이어그램: 자녀가 2명인 커밋1(또는 깃 "분기"라고 함):
parent children
+-- Commit <-- Commit <-- Commit (Branch named 'Tom')
/
v
(older) ... <-- Commit1 <-- Commit (Branch named 'master')
링크는 자식에서 부모로만 연결됩니다.부모에서 자식으로, 즉 오래된 것에서 새 것으로, 반대 방향을 가리키는 링크는 없습니다.
따라서 상위 커밋은 하위 커밋을 나열할 수 있는 직접적인 방법이 없습니다. 즉, 하위 커밋에서 파생된 것을 나열할 수 없습니다.
병합
자녀에게는 한 명 이상의 부모가 있습니다.
부모가 한 명만 있는 경우 이것은 단순한 부모 <--- 자식 커밋입니다.
부모가 둘 이상인 경우 이것이 git이 "합병"이라고 부르는 것입니다.한 아이가 한 명 이상의 부모를 동시에 가리킬 수 있는 것은 어머니뿐만 아니라 아버지를 둘 다 갖는 것과 같습니다.
라인 다이어그램: 두 부모와 커밋2(또는 우리가 git "합병"이라고 부르는 것, 즉 여러 부모로부터의 출산):
parents child
... <-- Commit
v
\
(older) ... <-- Commit1 <-- Commit2
원격의
이 단어는 두 가지 다른 의미로도 사용됩니다.
- 원격 저장소 및
- 원격 리포지토리의 로컬 별칭 이름, 즉 URL을 사용하여 원격 리포지토리를 가리키는 이름입니다.
원격 리포지토리 - 동일한 프로젝트를 추적하는 데 사용되지만 다른 위치에 있는 리포지토리입니다.원격과 통신하려면 가져오기 또는 푸시를 참조하십시오. (gitglossary)
(원격 저장소는 우리 컴퓨터의 또 다른 Git 저장소가 될 수도 있습니다.실제로 각 원격 이름에는 두 개의 URL이 있습니다. 하나는 푸시(즉, 커밋 업로드)용이고 다른 하나는 해당 원격 Git 저장소에서 풀(즉, 커밋 다운로드)용입니다.
"원격"은 원격 깃 저장소를 가리키는 연결된 URL을 가진 이름(식별자)입니다.(URL의 별칭으로 설명되었지만 그 이상입니다.)
여러 원격 리포지토리로 풀하거나 푸시하려는 경우 여러 원격을 설정할 수 있습니다.
대개 하나만 있고 기본 이름은 "origin"(복제한 위치의 업스트림 오리진을 의미)입니다.
origin - 기본 업스트림 리포지토리입니다.대부분의 프로젝트에는 추적하는 업스트림 프로젝트가 하나 이상 있습니다.기본적으로 오리진은 해당 용도로 사용됩니다.새로운 업스트림 업데이트는 origin/name-of-upstream-branch라는 원격 추적 분기로 가져올 것이며, git branch -r.(git glossary)를 사용하여 확인할 수 있습니다.
오리진은 리포지토리를 복제한 위치를 나타냅니다.
이 원격 리포지토리는 "업스트림" 리포지토리라고 하며, 복제된 리포지토리는 "다운스트림" 리포지토리라고 합니다.
업스트림 - 소프트웨어 개발에서 업스트림은 소스 코드 위키백과로 배포되는 소프트웨어의 원래 작성자 또는 유지 관리자를 향한 방향을 의미합니다.
upstream branch - 문제의 분기에 병합되는 기본 분기(또는 문제의 분기가 기반이 됨)입니다.분기를 통해 구성됩니다.원격 및 지점...merge. A의 업스트림 브랜치가 origin/B이면 "A는 origin/B를 추적하고 있습니다."라고 말할 수 있습니다. (gitglossary
이것은 대부분의 물이 일반적으로 여러분에게로 흐르기 때문입니다.
때때로 일부 소프트웨어를 업스트림 리포지토리로 다시 밀어넣어 복제한 모든 소프트웨어로 이동할 수 있습니다.
원격 추적 분기
원격 추적 분기는 다른 분기 이름과 마찬가지로 먼저 분기 이름입니다.
이는 로컬 Git 저장소에서 최근 커밋과 같은 로컬 성장 팁을 가리킵니다.
그러나 실제로는 커밋을 복제한 원격 저장소의 커밋을 가리키기도 합니다.
원격 추적 분기 - 다른 리포지토리의 변경 내용을 추적하는 데 사용되는 참조입니다.일반적으로 refs/remote/foo/bar(foo라는 원격 이름의 bar라는 분기를 추적함을 나타냄)처럼 보이며 구성된 fetch refspec의 오른쪽과 일치합니다.원격 추적 분기에는 직접 수정 사항이 포함되거나 로컬 커밋이 있어서는 안 됩니다. (gitglossary)
같은 커밋이 합니다.parent4 <== child-of-4
그리고 이를 복제하면 로컬 Git 저장소에서 정확히 두 가지 커밋이 수행됩니다.parent4 <== child-of-4
.
오리진이라는 이름의 원격 추적 지점이 이제 다음을 가리킵니다.child-of-4
.
에 커밋이 다음과 가정해 .parent4 <== child-of-4 <== new-baby
다운스트림 로컬 리포지토리를 업데이트하려면 새 아기를 가져와 로컬 깃 리포지토리에 추가해야 합니다.이제 지역 원격 추적 지점에서 신생아를 지목합니다.원격 추적 분기의 개념은 단순히 여러분이 관심을 가지고 있는 원격 분기의 일각을 추적하는 것입니다.
추적 중
먼저 git로 파일을 추적하기 시작합니다.
다음은 파일 추적과 관련된 기본 명령입니다.
$ mkdir mydir && cd mydir && git init # create a new git repository
$ git branch # this initially reports no branches
# (IMHO this is a bug!)
$ git status -bs # -b = branch; -s = short # master branch is empty
## No commits yet on master
# ...
$ touch foo # create a new file
$ vim foo # modify it (OPTIONAL)
$ git add foo; commit -m 'your description' # start tracking foo
$ git rm --index foo; commit -m 'your description' # stop tracking foo
$ git rm foo; commit -m 'your description' # stop tracking foo
# & also delete foo
원격 추적 실행 중
$ git pull # Essentially does: get fetch; git merge # to update our clone
가져오기, 병합 등에 대해 더 많은 것을 배울 수 있지만, 이를 통해 올바른 방향으로 나아갈 수 있을 것입니다.
이미 설정된 모든 추적 분기를 보는 방법에 대해서는 아무도 언급하지 않았습니다. 따라서 여기 명령이 있습니다. 부분적인 답변으로 간주하고 나머지 부분을 읽어 추적 분기가 무엇인지 이해하십시오.
git branch -vv
설정된 모든 추적 분기를 확인합니다.
간단한 답변은 추적 브랜치는 일반 브랜치와 비슷하지만 일부 원격 리포지토리 브랜치에 대한 "링크"가 있으므로 원격 브랜치가 변경되면 로컬 브랜치에 알림이 표시됩니다.
git 상태
지점 추적은 타이핑을 절약하는 방법입니다.또한 사용 시 몇 가지 추가 정보를 제공합니다.git status
그리고.git branch -v
.
이제 "타이핑을 저장해 주세요"가 무슨 뜻인지 설명하겠습니다.
분기를 추적할 경우 항상 입력할 필요는 없습니다.git push origin <branch-name>
또는git pull origin <branch-name>
또는git fetch origin <branch-name>
또는git merge origin <branch-name>
우리가 리모컨 이름을 지었기 때문에, 우리는 그냥 사용할 수 있습니다.git push
,git pull
,git fetch
,git merge
각각 다음과 같다.만약 우리가 우리의 제거에 이름을 붙이지 않는다면.origin
우리는 사용할 수 있습니다.git push <remote-name>
,git pull <remote-name>
,git fetch <remote-name>
,git merge <remote-name>
각각 다음과 같다.
의 git pull
▁to다ent에 해당합니다.git fetch origin HEAD
그리고.git merge HEAD
HEAD
는 현재 분기를 나타냅니다.
그git push
명령은 현재 분기에 대한 모든 커밋을 중앙 리포지토리로 보냅니다.이 는 명어는다같다니습처럼 .git push origin <current-branch>
하고 있는 , 인 만약우리추적있는지있다면, 는문구그에점가고.git merge
을 의미하는 것으로 해석됨git merge origin/<current-branch>
.
다음과 같은 경우 분기를 추적합니다.
- 사하여저를 사용하여
git clone
- 사용하다
git push -u origin <branch-name>
. 것이.-u
추적 지점으로 만듭니다. - 사용하다
git branch -u origin/<branch-name> <branch-name>
- 사용하다
--track
퇴실 중에전.git checkout --track origin/<branch-name>
언급URL : https://stackoverflow.com/questions/4693588/what-is-a-tracking-branch
'programing' 카테고리의 다른 글
파이썬에서 %time은 무엇입니까? (0) | 2023.07.19 |
---|---|
MongoDB에 대한 쿼리에서 정규식 변수를 사용하려면 어떻게 해야 합니까? (0) | 2023.07.09 |
표 열의 모든 셀을 특정 값으로 설정 (0) | 2023.07.09 |
CSS 불투명도는 텍스트가 아닌 배경색만 가능합니까? (0) | 2023.07.09 |
mongodb 점이 다각형에 있는지 확인합니다. (0) | 2023.07.09 |