2013-03-07 2 views
1

scratch이 원격 저장소이고 bough이이 저장소의 한 분기라고 가정합니다. 즉, git branch -r에 의해 인쇄 된 줄 중 하나는 scratch/bough입니다. 지금은git branch 이후의 .git/config의 내용 -t x y/z

% git branch -t twig scratch/bough 
Branch twig set up to track remote branch bough from scratch. 

을 실행 한 후 .git/config의 내용을 살펴보면, 나는 새로운 섹션이 추가 된 것을 볼 수 :

[branch "twig"] 
     remote = scratch 
     merge = refs/heads/bough 

merge 속성의 값을 믿고 하나가 발생할 수 있습니다 파일 .git/refs/heads/bough이 있지만 실제로는 에 해당 파일이 없습니다.

.git/refs 
├── heads 
│ ├── master 
│ └── twig 
├── remotes 
│ └── scratch 
│  └── HEAD 
└── tags 

이 날 내가 .git에이 값이 상대 경로라고하는 것이, (IOW을했다 생각하는 이유 라인 merge = refs/heads/bough 중 하나는의, 의미하지 않는다는 것을 깨닫게 :하지만 는 파일 .git/refs/heads/twig 지금있다 기존 파일), 그렇지 않으면 git에 꽤 중요한 버그가 있습니다.

그래서 이전의 경우를 가정 해 봅시다. 그렇다면 무엇이 라인 merge = refs/heads/bough은 실제로 의미합니까?

+0

'스크래치/머리'xD 때문에 질문을 +1해야했습니다. –

답변

4

라인은 로컬 저장소가 아닌 원격 저장소에있는 참조를 나타냅니다. twig에 대한 로컬 업스트림 브랜치는 실제로 refs/remotes/scratch/bough이 될 것입니다.

레코드의 경우 모든 참조가 .git/refs의 파일로 존재하지는 않습니다. 당신은 .git/packed-refs에 살고있는 포장 된 심판을 가질 수 있습니다.

1
[branch "twig"] 
    remote = scratch 
    merge = refs/heads/bough 

이 블록은 다음의 의미 다음 로컬 브랜치가 즉 twigscratch/bough 원격 추적 지점 인 원격 scratch에 상류 지점 bough을 갖도록 설정된다. 그래서 예. twig에있는 동안 푸시하면 scratch/bough으로 푸시됩니다.