원격 자식 분기를 삭제할 때 "오류 : 규정되지 않은 대상으로 푸시 할 수 없습니다"


139

와 함께 원격 자식 분기를 삭제하려고합니다.

git push origin :my_remote_branch

그리고 점점 :

error: unable to push to unqualified destination: my_remote_branch
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@example.com:/myrepo'

이들은 내 현재 지점입니다

git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/my_remote_branch

git branch -r --merged
  origin/HEAD -> origin/master
  origin/develop
  origin/master

이 지점을 제거하는 방법에 대한 아이디어가 있으면 감사하겠습니다.


git fetch존재하지 않는 원격 이름을 수정했는지 확인 하려고 했습니까 ? 들어가서 파일을 .git\refs\remotes\origin삭제 하려고 시도 했습니까 my_remote_branch?
VonC

했다 git fetch하지만 도움이되지 않았다. 파일을 수동으로 삭제하기 전에보다 직접적인 솔루션을 검색하려고합니다.
Hugo

해당 파일을 삭제하거나 최소한 이동 시키십시오. 파일에는 해당 분기 팁의 SHA1 만 포함되어 있습니다.
VonC

45
git fetch -p오래된 추적 분기를 제거 해야합니다 .
Jan Hudec

답변:


270

refs/remotes/origin/my_remote_branch로컬 저장소에 존재 한다는 사실이 원격 저장소에 refs/heads/my_remote_branch존재 하지는 않습니다 origin.

수행 git fetch -p origin하기 위해 refs/remotes/origin/my_remote_branch이미 기원으로 삭제하면 멀리 이동합니다. 이 -p옵션은 페치가 해당 리모트에 더 이상 존재하지 않는 추적 분기를 삭제하도록 지시합니다. 기본적으로 그들은 유지됩니다.


12
git fetch -p origin나를 위해 고쳤다. 정말 고마워.
redimp

1
당신의 대답은 굉장합니다. 본질에 대해 짧고!
1nstinct

가지 치기가 도움이되지 않았습니다! 반면 git push origin --delete origin/feature/x비 존재 심판에 대해 나에게 오류를 준 git push origin :feature/x분기를 삭제했다. 따라서 git push origin --delete <branchName>branchName (?)에 원점을 포함해서는 안되지만 bash로 완성되어 혼란 스럽습니다.
dashesy

@dashesy, 당신은 원래의 asker와 다른 상황에있었습니다. 원래 질문에서 문제는 원격 지점이 이미 다른 사람에 의해 이미 삭제 되어 로컬 로컬 만 동기화되어야한다는 것입니다. 리모컨을 삭제하는 동안. 실제로, 명령을해야 git push origin --delete feature/x당신이 지점의 이름을 제공하고 있기 때문에, 원점을 , 그리고 그것을 않습니다 하지 거기 접두사가 (두 가지 형태가 다른 동의어 어쨌든입니다).
Jan Hudec

@JanHudec이 의미가 있습니다. Bash complete는 :포함하지 않기 위해 사용할 때 똑똑 origin하지만 변형을 사용할 때 origin/branch_name대신 완료됩니다 . branch_name--delete
dashesy

56

찾을 질문 오래된 원격의 자식 가지를 정리 하고이 속임수를 썼는지

git branch -r -d origin/my_remote_branch

나는 지금 약 한 시간 동안 이것을 정확하게하려고 노력했습니다. 많은 감사합니다!
sebkkom 2012 년

이것은 원격 브랜치를 삭제하지 않습니다. git fetch를 사용하면 분기가 다시 나타납니다. 원격 지사의 로컬 목록에서 제거합니다.
Patrick Desjardins

2
@PatrickDesjardins git push origin :my_remote_branch는 원격에서 분기를 정확히 삭제하고 git branch -r -d origin/my_remote_branch로컬 분기의 로컬 분기 목록에서 제거합니다
Hugo

11

이미 삭제 된 원격 지점을 삭제하려고 할 때이 문제를 해결했습니다. 필요한 것은 자두뿐이었습니다.

git remote prune origin

4

원격 지점을 강제로 삭제하려면 다음 두 가지 옵션을 시도하십시오.

옵션 1

get push origin --delete <branchName>

옵션 2

git fetch -p origin
git branch -r -d origin/<branchName>

3
git branch -r -d origin/my_remote_branch

나를 위해 충분하지 않았다. 서버에 가서 git 디렉토리를 직접 사용하여 (위험하고 추악한) 브랜치를 제거하기 전에 :

ssh mygitserver
su - git
cd /home/git/repositories/my_remote_branch.git/
git  --git-dir=. --work-tree=/tmp/ branch -D my_remote_branch

그것은 위험하고 추악한 것이 아니라 잘못되었습니다 . 한 가지로,이 질문은 지점 원격에서 삭제 되었을 때 로컬로 지점을 삭제하는 것 입니다. 그리고 다른 경우, 원격에서 분기를 삭제하는 것은 단지 문제입니다 git push origin :my_remote_branch. 결장을 조심하십시오.
Jan Hudec

당신은 1 월이 맞습니다 git push origin :my_remote_branch. 그것은 정상적인 방법입니다. 이 추악하고 위험한 방법은 이것이 작동하지 않을 때입니다 (예 : 잘못 구성된 git으로 인해).
pevik

1

비슷한 문제가 있습니다. 먼저이 토론에 갔지만 https://stackoverflow.com/a/32147743/4209849를 볼 때까지 문제를 해결할 수 없었습니다 .

이는 단순히 구별에 팁을 추가 origin/my-branch-name하고 my-branch-name.

구체적으로 말하면 다음을 사용해야합니다.

git push origin :my_remote_branch

대신에

git push origin :origin/my_remote_branch

이것은 적어도 내 문제를 해결했습니다. 다른 사람들에게도 도움이되기를 바랍니다.


1

나에게 문제는 이것이 github의 기본 분기라는 것입니다. 기본 분기를 변경 한 후 삭제 작업이 성공했습니다.

누군가에게 도움이되기를 바랍니다.


0

이 같은 문제가 발생 ./.git/config하면 다음을 포함하도록 파일을 수동으로 편집했습니다 .

[branch "branchName"]
remote = origin
merge = refs/heads/branchName

결과 : error: src refspec branchName matches more than one.이것을 실행하여 수정했습니다 $git tag -d branchName. 그 후 새 지점을 업스트림으로 푸시 할 수있었습니다.


0

이것은 나를 위해 일했습니다 : github UI에서 원격 지점을 만든 다음 같은 이름을 가진 로컬 지점을 푸시했습니다. 다른 방법으로 작동하지 않는 경우 사용해보십시오. 다른 방법은 로컬로 새 브랜치를 만들고 빈 브랜치를 밀고 나중에 커밋을 고른 다음 다시 리모콘으로 푸시하는 것입니다.

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