병합 후 브랜치를 삭제해야합니까?


94

브랜치를 병합 한 후 저장소에서 삭제합니까?
그러나 좋은 습관입니까?

현재 릴리스를 중단하고 싶지 않기 때문에 일반적으로 많은 브랜치를 생성하고, 순서를 유지하기 위해 브랜치를 삭제하고 싶습니다.
그러나 Assembla 또는 GitHub로 작업하는 경우 이전 분기의 병합 요청이 사이트에 저장되므로이를 삭제하면 가져올 수 없기 때문에 오류가 발생합니다.

일반적으로 어떻게 관리합니까?

답변:


72

병합 된 브랜치를 삭제하는 데 문제가 없습니다. 모든 커밋은 히스토리에서 계속 사용할 수 있으며 GitHub 인터페이스에서도 계속 표시됩니다 (예를 들어, 내가 보유한 포크를 참조하는 이 PR 참조). PR이 수락 된 후 삭제됨).


모든 커밋이 기록에서 여전히 사용 가능하다고 말했습니다. github.com에서 프로젝트를 보면 이것이 사실이라는 것을 알 수 있습니다. 그러나 Mac 용 Github 데스크톱 앱에서는 병합 된 분기의 커밋 기록을 더 이상 볼 수없는 것 같습니다. 내가 잘못 했나?
peacetype

git 클라이언트를 사용하지 않는 경우, 특히 GUI와 함께 사용하지 않는 경우 분기를 사용하면 로그를 잘 이해하는 데 도움이 될 수 있습니다. 즉, 볼 수있는 github / gitlab / 기타 GUI가 없기 때문에 브랜치 이름을 유지하면 커밋 히스토리 외에도 히스토리를 참조 할 수있는 간단한 위치를 가질 수 있습니다. 그렇지 않으면 브랜치를 삭제하면 손실됩니다. 이 마지막 진술이 잘못된 경우 누군가 저에게 알려주십시오.
Raj

@Raj 당신은 이미 Merge branch fix-foo-bar커밋 메시지 의 형태로 가지고 있습니다 . 시도한 git log --grep="Merge branch"다음을 통해 관심있는 앵커를 삭제하십시오 git checkout -b curious-change. 또한 브랜치를 삭제할 때 손실되는 것은 없습니다. 단지 "branchname → commithash"포인터 (브랜치가 실제로는 로컬이든 원격이든 상관 없음)를 제외하면 손실되지 않습니다.
ulidtko

@ fred-foo 그것이 좋은 습관인지에 대한 질문은 답이 아닙니다. (같은 질문이 있습니다)
Esger

27

나는 그들이 합쳐진 후에 확실히 내 가지를 정리합니다.

우리는 직장에서 GitLab과 병합 요청을 사용하므로 분기에 대한 기록 정보가 여기에 저장됩니다. 나는 그들이 내 지점 목록을 복잡하게 만들 필요가 없으며 동료의 포크를 볼 때 이상적으로는 현재 활발한 개발의 지점 만보 고 싶습니다. 브랜치의 일부 코드를 살펴 보려는 경우 작업을 시작한 모든 기능이나 수정이 아닌 현재 활성화 된 브랜치 몇 개만 살펴볼 수 있기를 원합니다.

위의 내용은 BitBucket 및 GitHub에도 적용됩니다.

병합 후 브랜치를 삭제하지 않는 유일한 이유는 주어진 기능이 어디에서 끝났는지 알 수 있기 때문입니다.하지만 병합 커밋 (그리고 git merge --no-ff정말로 원하는 경우)은이를 무의미하게 만듭니다.


3
분명히 GitHub는 항상 --no-ff를 수행 하므로 이러한 상황에서도 이것이 분기라는 사실을 잃지 않을 것입니다.
joeytwiddle 2014-08-08

7
@joeytwiddle : GitHub의 자체 인터페이스를 사용하여 브랜치를 병합한다고 가정합니다.
아세라


0

명확히하기 위해 git 관점에서 분기는 일부 커밋에 대한 링크 입니다. 브랜치를 삭제하면 git repo에서 커밋이 삭제되지 않습니다. 물론 분리 된 커밋은 git 가비지 수집기를 통해 얼마 후 정리됩니다.

참고 : 우리는 일반적으로 bitbucket 인터페이스를 통해 분기를 마스터로 병합합니다. 거기에서 delete feature branch after merge플래그 를 설정할 수 있습니다 .

당신이 너무 세 가지 처리해야 할 경우, 당신은 몇 가지 유틸리티보고, 예를 들어 가질 수 이 하나 .

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