2010-08-09 3 views
6

을 사용하여 git 태그로 직접 복제 할 수 없습니다. git clone 명령에서 직접 태그를 체크 아웃 할 수없는 이유가 조금 있습니다. 내가 뭘하려고하는 것은 :-b <tagname>

git clone -b mytag <url>/foo.git 

내가 오류는 다음과 같습니다

warning: Remote branch mytag not found in upstream origin, using HEAD instead 

태그가 존재하고, 예를 들어

cd foo && git checkout mytag 

... 잘 작동합니다.

누군가가 태그에 직접 복제 할 수없는 이유에 대해 의견을 공유 할 수 있다면 감사하겠습니다. 고맙습니다.

+0

, 당신의 질문은 작동하지 않는 이유는 무엇입니까? 또는 가장 좋은 해결 방법은 무엇입니까? – mb14

+0

나는 약간의 혼란을 일으키는 불일치를 발견하지만 두 가지 질문이 지금 여기에 설명되어 있다고 생각한다. 나는 다른 접근법이 있는지보기 위해 내일까지 그것을 지킬 것이고, 나는 그것을 닫을 것이다. 설명 주셔서 감사합니다 @ mb14, @simplyharsh, @VonC! – grm

답변

4

아마 당신이 필요로하거나 원하는 것은 아마도 을 이해할 수있는 타볼을 가져 오기 위해 git archive을 사용하는 것입니다. --remote 옵션을 사용하여 일부 원격 소스에서 복제본을 전달할 <url>/foo.git 값과 동일하게 아카이브를 가져올 수 있습니다. 이론 상으로는 전체 저장소가 아닌 작업중인 트리를 잡는 것이 훨씬 빠르기 때문에 훨씬 빠릅니다.

여기 예 "나를 위해 작품"는을이다 : 그래서

% git archive --prefix foo/ --remote <url>/foo.git my-tag | tar -xf - 
+0

나는 그것을 명확히 들여다 볼 것입니다. 복제의 오버 헤드는 아마도 가치가 없습니다. 감사. – grm

0

git checkout mytag 이후에 detached head에 있습니까?

mytagfoo.git의 "refs/heads/"네임 스페이스 (branche HEAD의 경우)에 있지만 유효한 커밋을 계속 참조 할 수 있습니다.

경고가 git clone 인 것으로 설명되며, git checkout은 정상적으로 실행됩니다.

+0

예, 분리 된 상태입니다. 이 경우에는 git checkout과 git clone의 차이를 잘 모르겠다. 주석이 달린 태그가 도움이 될까요? – grm

+0

@grm : 아니요. 별 차이가 없습니다. git clone -b는 브랜치를위한 것이다. 다른 모든 refspec은'git checkout '을 통해 접근 할 수 있지만, 당신은 분리 된 HEAD에있을 것입니다 (즉, 브랜치를 생성해야 함을 의미합니다) – VonC

0

-b는 태그가 아닌 지점을 체크 아웃하기위한 것입니다. 그래서 원격 브랜치를 찾을 수 없다는 이유입니다 .-)

+0

자, git-checkout은 또한 브랜치를 브랜치라고 부릅니다. 질문은 유효합니다. – grm

+0

@grm 나는 질문이 잘못되었음을 말하는 것이 아니라 질문에 대답하는 것입니다. 어쩌면 그들은 체크 아웃을 위해 그것을 구현했지만 클론을 위해 구현하지 않았을 것입니다. BTW git checkout -b 태그를 사용하여 새 분기를 만들면 Repo 복제를 완료하기 전에 새 분기를 만들 수 없다는 사실에 놀라지 않습니다. – mb14

+0

AFAIK : 예제에 새 분기가 없습니다. 그것은 단지 참고서 일뿐입니다. – grm

1

태그에 직접 복제하면 의도적으로 문제가 해결됩니다.

그러나 사용중인 명령은 실제로 저장소의 분기를 복제하는 데 사용됩니다. 따라서 실제로 저장소에서 지점 이름 mytag을 체크 아웃하도록 요청하고 있습니다. mytag 분기가 분명히 원격 저장소에 없습니다.

그리고 새로운 태그에 복제하는 직접적인 방법은 없다고 생각합니다. 복제하고 태그를 적용하거나 git fetch --tags $URL을 사용하여 원격 저장소의 태그를 명시 적으로 가져와야합니다. 응답에

편집 :

음, 태그의 배치는 일반적인 사용 스타일입니다. 코드는 일반적으로 한 번 상당한 상태로 태깅됩니다. 원격 저장소에서 태그를 복제하고 가져온 후에는 mytag을 체크 아웃 할 수 있습니다.

git checkout mytag 

또는

git checkout -b mytagbranch mytag 

및 배포를 계속합니다.

+0

태그 시스템에서 직접 배포 할 것입니다. . – grm

관련 문제