추적 지점이란 무엇입니까?


173

누군가가 git에 적용되는 "추적 지점"을 설명 할 수 있습니까?

git-scm.com 의 정의는 다음과 같습니다 .

Git의 '추적 지점'은 원격 지점에 연결된 로컬 지점입니다. 해당 분기를 밀고 당기면 연결된 분기에 자동으로 밀고 당깁니다.

항상 동일한 업스트림 분기에서 새 분기로 가져오고 "git pull"을 명시 적으로 사용하지 않으려면이 옵션을 사용하십시오.

불행히도 git에 익숙하지 않고 SVN에서 나온 그 정의는 전혀 의미가 없습니다.

나는 " Git에 대한 실용 가이드 "(좋은 책, 그건 그렇고)를 읽고 있는데, 그들은 가지를 추적하는 것이 좋은 것이며 첫 번째 리모컨 (이 경우에는 출처)을 만든 후에는 마스터 브랜치를 추적 브랜치로 설정하지만 불행히도 추적 브랜치가 좋은 이유 또는 마스터 브랜치를 오리진 저장소의 추적 브랜치로 설정하여 얻는 이점 다루지 않습니다 .

누군가 제게 계몽 할 수 있습니까 (영어)?


6
Git 의 단어 track 은 매우 심하게 과부하되어 있습니다. 일부 파일은 추적 되고 일부는 추적되지 않습니다. 일부 지점 이름을 원격 추적 지점 이라고합니다 . --track옵션을 사용하여 이러한 원격 추적 분기 중 하나를 업스트림으로 설정 한 (로컬) 분기를 만들 수 있습니다 . 이 용어는 2006 년에서 2019 년 사이에 다소 발전해 왔기 때문에 사람들 마다 때때로이 단어마다 다른 의미를 가질 수 있습니다 .
torek

나는 개인적으로 문구를 사용하는 것이 좋습니다 이름의 원격 추적 의 장소에서 원격 추적 지점을 단어 때문에, 부분적으로 분기가 아니라 오히려 오버로드됩니다. 원격 추적 이름은 다음과 같습니다 origin/master. 저장소에 있지만 Git의 다른 Git 저장소 에서 볼 수있는 지점 이름 을 기억하는 방법입니다 . 그런 다음 단어를 사용하는 경우 업스트림 당신이 말을 더 현대적인 용어로, 한 그것으로 설정 상류 , 당신은이 모든 용어의 혼란을 피할 수 있습니다. originmasterorigin/master
torek

답변:


141

ProGit 책아주 좋은 설명 :

추적 지점

원격 지점에서 로컬 지점을 체크 아웃하면 자동으로 추적 지점이 생성됩니다. 추적 분기는 원격 분기와 직접적인 관계가있는 로컬 분기입니다. 추적 지점 및 유형 인 git push경우 Git은 어떤 서버 및 지점을 푸시할지 자동으로 인식합니다. 또한 git pull이러한 분기 중 하나 에서 실행 하면 모든 원격 참조를 가져온 다음 해당 원격 분기에 자동으로 병합됩니다.

리포지토리를 복제하면 일반적으로 원점 / 마스터를 추적하는 마스터 분기가 자동으로 생성됩니다. 의는 이유입니다 git pushgit pull다른 인수와 함께 상자 밖으로 작동합니다. 그러나 원할 경우 다른 분기 지점 (원점의 분기를 추적하지 않고 마스터 분기를 추적하지 않는)을 설정할 수 있습니다. 간단한 사례는 방금 본 예제 인 running git checkout -b [branch] [remotename]/[branch]입니다. 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정보

추적 지점을 사용하면 추적 지점 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)


21
"원격 지점에서 로컬 지점을 체크 아웃하면 자동으로 추적 지점이 생성됩니다." 오해의 소지가 있습니다. --track 옵션이 없으면 생성 한 분기가 추적되지 않습니다.
JohnO

@ JohnO, Pro Git 녀석과 함께하고 싶을 수도 있습니다. 전체 책은 대규모 편집 협업 IIRC의 결과입니다.
Assaf Lavie

2
@ JohnO에 따르면 : sbf5.com/~cduan/technical/git/git-4.shtml --track은 기본적으로 켜져 있으므로 필요하지 않습니다.
행크 린

50

아래는 GIT 추적 지점에 대한 개인 학습 노트입니다. 향후 방문자에게 도움이되기를 바랍니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오


분기 및 "git fetch"추적 :

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오


메모 주셔서 감사합니다! 가능하면 모두 공유 하시겠습니까? 감사;
Aditya

@Aditya :이 질문은 지점을 추적하기위한 것이며이 주제에 대한 모든 메모를 게시했습니다. 다른 GIT 메모를 게시 할 수있는 다른 관련 질문이 있으면 기꺼이 도와 드리겠습니다.
hagrawal

감사! 내가 의미하는 것은 귀하의 블로그 또는 무언가에 게시하는 것입니다 :). 좋은 메모에 다시 한번 감사드립니다!
Aditya

@Aditya : 아, 알겠습니다. 이제 당신은 당신이 무엇을 의미하는지 분명합니다. 나는 내 웹 사이트에서 뒤쳐져 있지만 아직 나 자신을 위해 웹 사이트를 만들지 않습니다.
hagrawal

43

Pro Git 책은 다음과 같이 언급합니다 .

추적 지점은 원격 지점과 직접적인 관계가있는 로컬 지점입니다.

정확히. "질문 에 어려움을 겪고있다git-fetch "라는 SO 질문 에는 다음이 포함됩니다.

로컬 추적 분기 에는 이러한 개념이 없으며 원격 추적 분기 만 있습니다.
그래서 origin/master원격 추적 지점입니다 master에서 originREPO.

그러나 실제로 한 번 당신은 설정 상류 지점의 관계 사이를 :

  • 같은 지방 지점 master
  • 같은 원격 추적 지점 origin/master

그런 다음 로컬 추적 분기master 로 간주 할 수 있습니다 . 원격 추적 분기추적 하여 업스트림 리포지토리 의 마스터 분기를 추적합니다 . origin/master origin

대체 텍스트


이미지 설명 : 내 컴퓨터는 2 번의 커밋보다 우선합니다. 그곳에서 마스터로부터의 커밋이 시작됩니다. 이미지 : progit.org/book/ch3-5.html
idbrii

올바르게 해석하고 있습니까? 원산지 및 업스트림에 대해 로컬로 설정된 리모컨이 있으면 로컬 마스터 브랜치가 원점을 직접 추적하고 간접적으로 업스트림합니까? 예 : git status출발지와 업스트림 저장소 모두에 대한 커밋 추적 메시지를받을 때 ? (설정 : 누군가의 리포지를 로컬로 복제하고 내 클론을 내 GitHub 계정의 새 리포지토리로 푸시했으며, 원산지 및 업스트림 원격을 각각 github 리포지토리 및 복제 된 리포지토리에 로컬로 설정했습니다).
SherylHohman 17:29에

3
@SherylHohman 아니요 : 로컬 지점은 "직접"또는 "간접"을 추적하지 않습니다. 할당 할 원격 추적 분기를 추적합니다. 포크의 경우 모범 사례는 마스터와 같은 공통 분기의 업스트림 (원본 저장소)을 추적하고 새 분기 (PR 또는 기능 분기)의 오리진 (원격 포크)을 추적하는 것입니다. stackoverflow.com/을
VonC

2
@VonC- "지역 추적 브랜치에는 그러한 개념이 없으며 원격 추적 브랜치 만 있습니다." 흥미로운 점은 b / c와 관련하여 충돌하는 용어가 있다는 것입니다. 이것은 종종 링크 web.archive.org/web/20130419172453/http://www.gitguys.com/… 링크를 참조합니다. "추적 지점"과 "원격 추적 지점"을 구별합니다. 그들은 원산지 / 마스터를 "원격 추적 지점"이라고 부릅니다. 동의합니다. 그러나 "마스터"를 "추적 지점"이라고 부릅니다. 마스터 추적이란 무엇입니까? 그것들이 잘못되었거나 용어 문제입니까?
Howiecamp December

2
@Howiecamp가 "마스터라는 추적 지점"이라고 부르는 것은 단순히 원격 추적 지점 원점 / 마스터가있는 로컬 지점 마스터입니다. 여기에서 원격 마스터 지점과 관련하여 원점에서 가져온 마지막 SHA1을 기억합니다. 따라서 "상류 지점이있는 지역 지점"을 지정하기위한 "바로 가기"
VonC

7

추적 지점을 추가하여 새 지점으로 가져올 수있는 방법은 다음과 같습니다.

git branch --set-upstream-to origin/Development new-branch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.