[첫화면으로]Git/Branch

마지막으로 [b]

1. 브랜치를 로컬과 리모트에서 같이 삭제 (번역 요약)

[http://stackoverflow.com/a/23961231/1150133 -- github - Delete a Git branch both locally and remotely - Stack Overflow] 질문글에 달린 [답변글]이 좋아서 요약 번역함. 그림 출처도 저 글.

질문

어떤 브랜치를 로컬 저장소와 리모트 저장소 양쪽에서 다 지우고 싶다. (그런데 git pull할 때마다 되살아난다)

짧은 답변

리모트 저장소의 브랜치를 지우려면:

git push origin --delete <branch>  # Git 버전 1.7.0 또는 그 이후
git push origin :<branch>          # Git 버전 1.7.0 이전

로컬 저장소의 브랜치를 지우려면:

git branch --delete <branch>
git branch -d <branch> # --delete 대신 짧게
git branch -D <branch> # 머지되지 않은 브랜치를 강제로 지울 때

리모트 트래킹 브랜치(remote-tracking branch)를 지우려면:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # 짧게

git fetch <remote> --prune # 유효하지 않은 트래킹 브랜치를 전부 삭제
git fetch <remote> -p      # 짧게

긴 답변 : 지워야 될 브랜치는 세 가지이다

브랜치를 로컬과 리모트에서 다 지울 때 연관되는 브랜치는 (두 가지가 아니라) 세 가지이다.

  1. 로컬 브랜치 X
  2. 리모트 origin 저장소에 있는 브랜치 X
  3. 리모트 브랜치 X를 추적하고 있는 로컬 리모트-트래킹 브랜치 origin/X

Upload:del_branch_1.png

질문자가 시도했던 방법

 git branch -rd origin/bugfix
이것은 리모트-트래킹 브랜치인 origin/bugfix만 삭제할 뿐, origin 저장소에 있는 실제 리모트 브랜치 bugfix를 삭제하지는 않는다.

Upload:del_branch_2.png

실제 리모트 브랜치를 삭제하려면 다음과 같이 해야 한다

 git push origin --delete bugfix

Upload:del_branch_3.png

보충 설명

리모트 브랜치나 리모트-트래킹 브랜치를 삭제할 때 고려해야 할 점

리모트 브랜치를 삭제하기 위해 push를 쓰면 리모트-트래킹 브랜치도 같이 삭제된다

git push를 사용하여 리모트 브랜치 X를 삭제할 경우 로컬에 있는 리모트-트래킹 브랜치 origin/X도 삭제되므로, 따로 git fetch --prune을 수행할 필요는 없다.

정말로 트래킹 브랜치가 같이 삭제되었는지는 다음과 같은 코드를 써서 알 수 있다.

 # 리모트-트래킹 브랜치 목록만 보기
 git branch --remotes
 git branch -r

 # 로컬 브랜치와 리모트-트래킹 브랜치 목록 보기
 git branch --all
 git branch -a

prune으로 유효하지 않은 리모트-트래킹 브랜치 일괄 삭제하기

리모트 브랜치 X를 커맨드 라인에서 삭제한 게 아니라 GitHub의 웹 인터페이스를 쓰는 등 원격에서 직접 삭제했다면, 로컬 저장소에는 아직 리모트-트래킹 브랜치 origin/X가 남아 있으며 이 브랜치는 의미없는 브랜치이다.

이런 유효하지 않은 리모트-트래킹 브랜치를 삭제할 때는 git fetch--prune 또는 -p 옵션을 주어 실행한다. 이 명령을 쓰면 유효하지 않은 리모트-트래킹 브랜치들은 전부 삭제되는 것에 유의

 git fetch origin --prune
 git fetch origin -p # 짧게

유효하지 않은 리모트-트래킹 브랜치를 수동으로 삭제하는 다른 방법

git branch --delete--remote 또는 -r 옵션을 주어서 원하는 리모트-트래킹 브랜치들만 삭제할 수 있다. 이 경우는 네트워크 연결도 필요없다.

 git branch --delete --remotes origin/X
 git branch -dr origin/X # 짧게

참고

2. Comments

이름:  
Homepage:
내용:
 

컴퓨터분류

마지막 편집일: 2015-12-16 6:50 pm (변경사항 [d])
731 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기