일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 데이터분석
- 사이버보안
- 딥러닝
- I'm Sorry
- 컴퓨터비전
- 자료구조
- 코딩
- 2
- 네트워크
- 소프트웨어
- 프로그래밍
- 데이터구조
- 클라우드컴퓨팅
- 네트워크보안
- 프로그래밍언어
- 파이썬
- Yes
- 컴퓨터과학
- 인공지능
- 빅데이터
- 데이터베이스
- 보안
- 알고리즘
- 소프트웨어공학
- 버전관리
- 머신러닝
- 웹개발
- 데이터과학
- 컴퓨터공학
- 자바스크립트
- Today
- Total
스택큐힙리스트
로컬 및 원격으로 Git 브랜치를 삭제하려면 어떻게 하나요? 본문
원격 브랜치 삭제 시도에 실패했다:
git branch -d remotes/origin/bugfix
오류: 브랜치 'remotes/origin/bugfix'를 찾을 수 없습니다.
git branch -d origin/bugfix
오류: 브랜치 'origin/bugfix'를 찾을 수 없습니다.
$ git branch -rd origin/bugfix
원격 브랜치 origin/bugfix를 삭제했다(2a14ef7).
$ git push
모든 것을 최신으로
$ git pull
github.com:gituser/gitproject에서
* [새 브랜치] 버그픽스 -> 오리진/버그픽스
이미 최신 상태입니다.
로컬과 원격 모두에서 리모트/오리진/버그픽스 브랜치를 올바르게 삭제하려면 어떻게 해야 하나요?
아니요, 틀린 것은 아니지만 모르는 것을 모르는 것을 가르치지 않는 반면, 제가 링크 한 것은이 중요한 미지의 미지를 알려진 미지가 된 다음 알려진 미지가되도록 만듭니다. 저는 그 답변을 읽기 전까지는 1) 로컬 브랜치, 2) 로컬에 저장된 원격 추적 브랜치, 3) 원격 브랜치가 있다는 사실을 몰랐습니다. 그 전에는 로컬 브랜치와 원격 브랜치만 있다고 생각했습니다. 로컬에 저장된 원격 추적 브랜치는 알려지지 않은 미지의 영역이었죠. 그것을 알려진 미지의 것으로 만드는 것이 그 대답을 가장 잘 만드는 것입니다.
짧은 답변
다음 명령에 대한 자세한 설명이 필요하면 다음 섹션의 긴 답변을 참조하세요.
원격 브랜치 삭제하기
git push origin --delete <branch> # Git 버전 1.7.0 이상
git push origin -d <branch> # 더 짧은 버전(Git 1.7.0 이상)
git push origin :<branch> # 1.7.0 이전 Git 버전
로컬 브랜치 삭제하기
git 브랜치 --delete <브랜치>
git 브랜치 -d <브랜치> # 더 짧은 버전
git 브랜치 -d <브랜치> # 병합되지 않은 브랜치 강제 삭제
로컬 원격 추적 브랜치 삭제하기
git branch --delete --remotes <remote>/<branch>
git 브랜치 -dr <원격>/<브랜치> # 더 짧게
git fetch <remote> --prune # 더 이상 사용되지 않는 여러 원격 추적 브랜치를 삭제한다.
git fetch <remote> -p # 더 짧게
긴 대답: 삭제할 브랜치가 세 가지가 있다!
로컬과 원격 모두에서 브랜치를 삭제할 때는 세 가지 브랜치가 관련되어 있다는 점을 명심하자:
로컬 브랜치 X.
원격 오리진 브랜치 X.
원격 브랜치 X를 추적하는 로컬 원격 추적 브랜치 오리진/X.
세 가지 브랜치 시각화
원본 포스터를 사용했다:
git 브랜치 -rd origin/bugfix
로컬 원격 추적 브랜치 오리진/버그픽스만 삭제하고 오리진의 실제 원격 브랜치 버그픽스는 삭제하지 않았다.
다이어그램 2
실제 원격 브랜치를 삭제하려면 다음이 필요하다.
git push origin --삭제 버그픽스
다이어그램 3
추가 세부 정보
다음 섹션에서는 원격 브랜치 및 원격 추적 브랜치를 삭제할 때 고려해야 할 추가 세부 사항을 설명한다.
원격 브랜치를 삭제하려면 Push를 누르면 원격 추적 브랜치도 제거된다.
명령줄에서 원격 브랜치 X를 git push로 삭제하면 로컬 원격 트래킹 브랜치 origin/X도 제거되므로, 더 이상 사용하지 않는 원격 트래킹 브랜치를 git fetch --prune 또는 git fetch -p로 가지치기를 할 필요가 없다. 그러나 어쨌든 그렇게 해도 나쁘지 않다.
다음을 실행하여 원격 추적 브랜치 origin/X도 삭제되었는지 확인할 수 있다:
# 원격 추적 브랜치만 보기
git 브랜치 --remotes
git branch -r
# 엄격하게 로컬 브랜치와 원격 추적 브랜치 모두 보기
git 브랜치 --all
git 브랜치 -a
더 이상 사용되지 않는 로컬 원격 추적 브랜치 origin/X 가지치기하기
위와 같이 명령줄에서 원격 브랜치 X를 삭제하지 않았다면 로컬 리포지토리에 여전히 (지금은 사용되지 않는) 원격 추적 브랜치 origin/X가 포함될 것이다. 예를 들어 GitHub의 웹 인터페이스를 통해 직접 원격 브랜치를 삭제한 경우 이런 일이 발생할 수 있습니다.
이러한 더 이상 사용되지 않는 원격 추적 브랜치를 제거하는 일반적인 방법(Git 버전 1.6.6 이후)은 --prune 또는 더 짧은 -p를 사용하여 git fetch를 실행하는 것이다. 이렇게 하면 원격에 더 이상 존재하지 않는 모든 원격 브랜치에 대해 더 이상 사용되지 않는 로컬 원격 추적 브랜치가 모두 제거된다는 점에 유의하세요:
git fetch origin --prune
git fetch origin -p # 더 짧게
다음은 1.6.6 릴리스 노트의 관련 인용문이다(강조는 내 것):
"git fetch"는 많은 리포지토리에서 fetch를 실행하기 위해 --all 및 --multiple 옵션과 오래된 원격 추적 브랜치를 제거하기 위해 --prune 옵션을 학습했습니다. 이렇게 하면 "git 원격 업데이트"와 "git 원격 가지치기"의 필요성이 줄어든다(하지만 "원격 업데이트"나 "원격 가지치기"를 제거할 계획은 없다).
더 이상 사용되지 않는 원격 추적 브랜치에 대한 위의 자동 가지치기의 대안
또는, 더 이상 사용되지 않는 로컬 원격 추적 브랜치를 git fetch -p를 통해 가지치기하는 대신 --remotes 또는 -r 플래그를 사용하여 수동으로 브랜치를 제거함으로써 추가 네트워크 작업을 피할 수 있다:
git 브랜치 --delete --remotes origin/X
git 브랜치 -dr origin/X # 더 짧게
요약
git push -d <원격_이름> <브랜치명>
git 브랜치 -d <브랜치명>
참고: 대부분의 경우 <remote_name>은 오리진이 된다.
로컬 브랜치 삭제
로컬 브랜치를 삭제하려면 다음 중 하나를 사용한다:
git branch -d <branch_name>
git 브랜치 -d <브랜치_이름>
d 옵션은 --delete의 별칭으로, 브랜치가 이미 업스트림 브랜치에 완전히 병합된 경우에만 브랜치를 삭제한다.
D 옵션은 --delete --force의 별칭으로, "병합된 상태와 관계없이" 브랜치를 삭제한다. [출처: man git-branch]
Git v2.3부터 git 브랜치 -d(삭제)는 -f(강제) 플래그를 따르도록 학습되었다.
현재 선택된 브랜치를 삭제하려고 하면 오류가 발생합니다.
원격 브랜치 삭제
Git v1.7.0부터 다음을 사용하여 원격 브랜치를 삭제할 수 있습니다.
$ git push <remote_name> --delete <branch_name>
보다 기억하기 쉬울 수 있습니다.
$ git push <remote_name> :<branch_name>
보다 더 기억하기 쉬울 수 있습니다. 이 명령은 Git v1.5.0에 "원격 브랜치 또는 태그를 삭제하기 위해" 추가되었습니다.
Git v2.8.0부터는 --delete의 별칭으로 -d 옵션과 함께 git push를 사용할 수도 있습니다. 따라서 설치한 Git 버전에 따라 더 쉬운 구문을 사용해야 하는지 아니면 더 어려운 구문을 사용해야 하는지가 결정됩니다.
원격 브랜치 삭제하기 [2010년 1월 5일의 최초 답변]
스콧 차콘의 Pro Git 3장 중에서 발췌:
원격 브랜치 삭제하기
원격 브랜치 작업을 끝냈다고 가정해 보자. 예를 들어, 여러분과 공동 작업자가 기능을 완성하고 이를 원격의 메인 브랜치(또는 안정적인 코드 라인이 있는 브랜치)에 병합했다고 가정해 보자. 원격 브랜치를 삭제하려면 다소 난해한 구문인 git push [원격이름] :[브랜치]를 사용하면 된다. 서버에서 서버픽스 브랜치를 삭제하려면 다음을 실행한다:
git push origin :serverfix
git@github.com:schacon/simplegit.git
- [삭제된] 서버픽스
짠! 서버에 더 이상 브랜치가 없다. 이 명령이 필요하고 구문을 잊어버릴 가능성이 높으므로 이 페이지를 귀담아 들어두는 것이 좋을 수 있습니다. 이 명령을 기억하는 방법은 앞서 살펴본 git push [remotename] [localbranch]:[remotebranch] 구문을 떠올리는 것이다. localbranch] 부분을 생략하면 기본적으로 "내 쪽에서 아무것도 가져가지 않고 [remotebranch]로 만들라"고 말하는 것과 같습니다.
나는 git push origin: bugfix를 발행했고, 잘 작동했다. Scott Chacon의 말이 맞았어요. 그 페이지에 귀를 기울이고 싶을 것입니다(또는 스택 오버플로에서 이 질문에 답함으로써 사실상 개 귀를 기울이고 싶을 것입니다).
그런 다음 다른 컴퓨터에서 이 코드를 실행해야 합니다.
# 모든 원격에서 변경 내용을 가져와 로컬로 삭제합니다.
# 원격에서 브랜치/태그 등을 삭제합니다.
# 다음과 같이 실행하면 된다;
git fetch --all --prune
를 사용하여 변경 사항을 전파한다.