SourceTree에서 푸시를 시도 할 때 "태그가 이미 존재하기 때문에 업데이트가 거부되었습니다."


118

소스 트리를 통해 푸시를 시도 할 때 다음 오류가 발생합니다.

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master 
Pushing to https://user@github.com/repo.git
To https://user@github.com/repo.git
 = [up to date]      master -> master
...
 ! [rejected]        example_tag -> example_tag (already exists)
updating local tracking ref 'refs/remotes/origin/master'
error: failed to push some refs to 'https://user@github.com/repo.git'
hint: Updates were rejected because the tag already exists in the remote.
Completed with errors, see above

내가 아는 한이 태그를 변경하지 않았습니다. 이 문제를 어떻게 해결할 수 있습니까?

답변:


230

git bash에서도이 문제를 해결할 수 있습니다 (소스 트리 UI에서 "터미널"버튼 클릭). 유형:

git pull --tags

3
나는 이것이 가장 적은 저항의 길이 기 때문에 이것이 최선의 대답이라고 생각합니다.
Chad

40
충돌하면 할 수 git pull --tags -f만약 당신이 원하는 경우 로컬 가지고있는 하나를 덮어
DenLilleMand

2
SourceTree에서 Fetch를 클릭하고 "Fetch all tags"를 활성화합니다. 그렇게 할 것입니다.
darkgaze

117

유지하려는 태그를 로컬로 변경하지 않은 경우 이미 존재 하기 때문에 거부 된 태그를 제거 할 수 있습니다 ( example_tag이 경우).

  1. 태그를 마우스 오른쪽 버튼으로 클릭하고 (반드시 삭제를 선택 취소 모든 리모컨의에서 제거 태그를 체크 박스).
  2. 가져 오기 옵션을 선택합니다 (모든 태그를 로컬로 가져 와서 저장 하지 않아도됩니다).
  3. 이제 방금 삭제 된 태그가 있어야하며 푸시 를 시도해 도 더 이상 해당 오류 메시지가 표시되지 않습니다.

이것이 SourceTree에서 일반적인 이유는 Push all tags 옵션이 기본적 으로 on 으로 설정되어 있기 때문 입니다. (이 오류를 숨기는 또 다른 방법은 해당 옵션을 선택 취소하는 것입니다.)


"모든 태그를 로컬로 가져 와서 저장하는 것은 활성화 할 필요가 없습니다."는 문제가 반복되는 원인인지 확인하면서 저를 위해 한 일입니다.
Tom

업스트림 (원본) 저장소가 진실의 원천이라고 가정하면이 솔루션은 가장 파괴적이지 않으며 문제를 즉시 수정합니다.
Steve Henty 2018

안타깝게도 15 개의 거부 된 태그가있는 경우 1,2,3 단계는 매우 지루할 수 있습니다. 예, "모든 태그 푸시"옵션을 비활성화하는 것이 올바른 방법 일 것입니다.
SagiSergeNadir

27

push all tagsgit push를 확인할 때 UI 하단의 선택 을 취소 하십시오.


그랬어 push all tags?
Wodin

큰! 그것을 관찰하지 않았다. 감사합니다
Meg-90

@Wodin 그래서 push all tagsUI에서 를 확인 하면 이전 태그를 덮어 쓰려고합니다. 그러나 덮어 쓰기를 방지하려면
체크

@ JDev-Guns 방금 문구를 쿼리했습니다. 당신은 원래 말했다 push all TABs. 나는 SourceTree에 익숙하지 않지만 TAGs대신 TABs.
Wodin

트윗 담아 가기 나는 내가 말한 것 TAGs같지만, 내가 말하지 TABs
않았다면

15

git pull --tags정말 잘 작동하지만 때때로이 명령을 사용해도 오류가 발생할 수 있습니다. 오류 메시지 예 :

 ! [rejected]        example_tag      -> example_tag  (would clobber existing tag)

이것은 다음 명령으로 해결할 수 있습니다. git pull --tags -f

출처:

https://github.com/concourse/git-resource/issues/233


14

누르는 동안 "Push all tags"버튼의 체크를 해제하십시오.

여기에 이미지 설명 입력


위에서 언급했듯이 새 태그를 로컬에 추가하면 원격으로 푸시되지 않는다는 의미가 아닙니까?
bytedev

0

예, 실제로 태그를 먼저 당깁니다 push --tags. 내 문제를 해결했습니다.


-1

이 방법 으로 SourceTree 의 문제를 해결합니다 .

  1. "모든 리모컨에서 태그 제거"를 선택하여 태그 삭제
  2. 태그 재생성
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.