Programing

git delete remotes : 원격 참조가 존재하지 않습니다.

lottogame 2020. 8. 22. 11:28
반응형

git delete remotes : 원격 참조가 존재하지 않습니다.


간단히 말해서

  • 병합 된 원격 원격 여러 대를 삭제하려면 어떻게해야합니까?

더 많은 배경;

마스터에 병합 된 수십 개의 리모컨이있는 git repo가 ​​있습니다. 다음을 사용하여 이러한 리모컨을 한 번에 하나씩 삭제할 수 있습니다.

git push --delete origin myBranch-1234

그러나 이것은 모든 리모컨에 대해 느리고 지루한 프로세스입니다. 그래서이 명령을 시도하고 있습니다.

git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete

git branch -r --merged병합 된 모든 리모컨을 나열합니다.
grep origin원점을 포함하도록 명령에 지시합니다.
grep -v master마스터를 제외하도록 명령을 지시합니다.
xargs git push origin --delete원격 목록을 삭제하도록 명령에 지시합니다.

모두 합쳐서 병합 된 모든 리모컨을 수집하고 삭제할 것으로 예상합니다.

위의 명령을 실행하면 병합 된 모든 리모컨에 대해 다음을 수신합니다.

error: unable to delete 'origin/myBranch-1234': remote ref does not exist
error: unable to delete 'origin/myBranch-1235': remote ref does not exist
error: unable to delete 'origin/myBranch-1236': remote ref does not exist
error: unable to delete 'origin/myBranch-1237': remote ref does not exist
... etc

그러나 이러한 리모컨은 존재하며 각각을 확인할 수 있습니다. 많은 사이트와 사람들은 git fetch --prune누락 된 참조를 정리하기 위해 실행 하도록 권장합니다 . 이 리모컨이 모두 존재하기 때문에 아무 작업도 수행하지 않습니다.

그래서 저는 여러분에게 부탁합니다, 친애하는 스택 교환;

  • 리모컨은 하나만 삭제할 수 있지만 여러 개는 삭제할 수없는 이유는 무엇입니까?
  • 내 명령이 맞습니까?

작은 것이 빠진 것 같아요. 이것을 조사 할 때마다 올바르게 수행하는 것처럼 보이지만 위의 오류가 발생합니다.


먼저 원격 분기의 로컬 "캐시"를 정리해야 할 수도 있습니다. 다음을 실행 해보십시오.

git fetch -p origin

삭제하기 전에.


해당 분기가 원격 (원점)에서 제거됩니까? 그렇다면 간단히 할 수 있습니다.

git fetch --prune origin

그렇지 않으면 로컬에서 삭제 한 후에도 반환 될 수 있습니다.

업데이트 : 명령을 다시 보면 잘못 빌드하는 것 같습니다. 당신은 아마 원합니다

git push origin --delete myBranch-1234

그러나 대신 당신은

git push origin --delete origin/myBranch-1234

사용 sed'원산지 /'부분을 제거하고 lttile의 변경 xargs부분.

git branch -r --merged | grep origin | grep -v -e master | sed s/origin\\/// |  xargs -I{} git push origin --delete {}

참고 URL : https://stackoverflow.com/questions/32147093/git-delete-remotes-remote-refs-do-not-exist

반응형