[git] Git에서 콜론 (: <branch>)을 사용하여 원격 분기를 삭제하는 이유

Git이 사용하는 이유

git push <remote> :<branch>

에서와 같이

git push origin :featureA

지점을 삭제하려면 featureA원격 서버에서 ?

콜론이 삭제 플래그로 사용 된 이유에 관심이 있습니다.

.NET과 너무 다릅니다 git branch -d <localbranch>.

우리는 왜 이렇게하지 않습니까?

git branch -d --remote origin <branchname>

아니면 내가 몰랐던 콜론 기호 뒤에 더 깊은 의미가 있습니까?



답변

그것은 :그 자체 의 의미가 아니라 존재하거나 그 앞에없는 것입니다.

refspec 형식은 다음과 같습니다.

<+><source>:<destination>

(선택 사항 + 비 빨리 감기)

그래서 당신이 뭔가를 할 때 git push origin :featureA, 당신은 빈 소스 참조를 지정하고 기본적으로 대상을 “비어”만들거나 삭제합니다.

추신 : refspec of :or nothing은 아무것도 밀어 붙이는 것을 의미하지는 않습니다. “일치하는”브랜치를 푸시하도록 git을 만듭니다. 로컬 측에 존재하는 모든 브랜치에 대해 동일한 이름의 브랜치가 이미 원격 측에 존재하면 원격 측이 업데이트됩니다.


답변

콜론은 “삭제 플래그”가 아닙니다. 참고 자식 푸시자식 풀 모두 최종 인수 (들)로 0 개 이상의 refspecs에 동의합니다. 이제 refspec에 대해 읽어보십시오 . 콜론은 참조 사양에서 소스와 대상을 구분합니다. 이 명령 git push origin :foo은 소스가 비어 있으며 기본적으로 ” 원점 foo 분기에 아무것도 푸시 하지 않음 “, 즉 “원점에 분기 foo가 존재하지 않음”이라고 말합니다.


답변