더 이상 존재하지 않는 원격 분기를 표시하는 'git branch -av'


168

이것은 아마도 멍청한 질문이지만, git을 처음 접했고 더 이상 존재하지 않는 원격 지점을보고 있습니다.

$ git branch -a
* master
  remotes/origin/master
  remotes/origin/production

프로덕션 브랜치가 원격으로 존재하며 왜 여전히 로컬로 표시되는지 알 수 없습니다. 이 지점을 어떻게 삭제 / 제거 할 수 있습니까? 제거 시도는 다음과 같습니다.

$ git push origin :production

error: unable to push to unqualified destination: production
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@IP:puppet.git'

아마도 원격 생산 지점을 체크 아웃 할 수는 있지만 이것을 얻으십시오.

$ git checkout origin/production
Note: checking out 'origin/production'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at c323996... added powerdns module, no really

내가 뭘하고 있는지 전혀 모른다. 도움을 주시면 감사하겠습니다.


의 출력 무엇 git branch -a후는 git fetch?
alediaferia


내가 제안한 사본에는 manojlds가 여기에서 한 것보다 훨씬 많은 설명이 있습니다.
Cascabel

답변:


338

너가해야되는:

git remote prune origin

8
고마워요! 비하인드 스토리에 대해 자세히 설명해 주시겠습니까?
CarpeNoctem

12
이들은 로컬 리포지토리의 원격 추적 브랜치이며 원격 리포지토리에서 브랜치가 삭제 된 경우 해제해야합니다.
manojlds

2
그런 간단한 질문과 답변을 빨리 찾아서 구현하는 경우는 거의 없습니다.
jleach

내 로컬에서 코드베이스 저장소와 관련이없는 이상한 지점을보고있었습니다.이 명령을 실행할 때 로컬 로컬 지점을 조정 한 다음 업스트림 마스터 .thanks를 추가했습니다.
Ankur Srivastava

54

따라서 두 가지 문제가 있습니다. 두 경우 모두 Git이 배포되었음을 기억하십시오.

먼저. 당신이 같은 일을 할 때

$ git branch -a

원격 컴퓨터가 아닌 로컬 리포지토리에서 작업이 수행됩니다. 다시 말해, 지역 리포지토리는 알고있는 모든 지점을보고합니다. 로컬 브랜치 (예 : '마스터') 또는 원격 에서 가져온 원격 브랜치 일 수 있습니다 . 마지막 반입 이후 원격 저장소의 '프로덕션'분기가 변경되었지만 로컬 저장소는이를 알지 못합니다. manojlds 의 대답 은 맞습니다. 운영

$ 자식 원격 정리 원점

오래된 가지를 제거합니다.

'git push origin : production'명령은 원격 컴퓨터의 git repo에서 분기를 삭제하는 데 사용됩니다. 현지 리포지토리가 아닙니다. 이 경우 다른 누군가가 이미 원격 컴퓨터의 git repo에서 분기를 삭제 했으므로이 오류 메시지가 표시됩니다.

다음은 이러한 명령을 요약 한 링크 입니다.

두 번째 문제는 결제를 처리합니다.

지점을 체크 아웃 할 때는 원격 지점이 아닌 로컬 지점 에서 수행하려고합니다 . 분리 된 HEAD에 대한 오류가 발생하는 이유입니다. REPO 자식 노트 피투성이 세부에서 문제의 좋은 설명이있다. 기본적으로 핵심 문구는

그러나 올바른 로컬 지사 이름이 아닌 것을 체크 아웃하면 HEAD는 더 이상 아무것도 상징적 인 참조가 아닙니다. 대신 실제로 전환하려는 커밋의 SHA-1 해시 (커밋 ID)를 포함합니다.

이제 원격 지점과 동일한 로컬 지점을 확인하는 방법은 무엇입니까?

원격 지점을 체크 아웃 할 때 로컬 지점을 쉽게 만들 수 있습니다.

$ git checkout -b my_local_branch 원산지 / 생산


20
git remote prune origin

맞습니다. --dry-run옵션을 추가 하여 로컬 리포지토리에서 잘라낸 브랜치를보고하지만 실제로 프룬하지는 않습니다.

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