Git 브랜치를 닫는 방법?


112

그래서 저는 Git + GitHub를 사용하고 있습니다.

소규모 분산 팀에서 각 구성원은 할당 된 각 문제 / 요구 사항에 대해 고유 한 분기를 만들고 있습니다.

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

지금 code code, commit, code, commit, 등 ...

다음 pull request, code-fixup, commit, code, commit등 ..

그리고 마침내 ... pull request가 수락됩니다.

우와.

근데 .. 이제 뭐야? (......어색한......)

로컬 개발 시스템에서 브랜치를 만든 사람이 브랜치를 닫아야합니까? 개발자가`(... -D ...) 브랜치를 삭제 한 다음 master .. 풀 / 리프레시를 수행하면 모든 브랜치 코드를 얻을 수 있다는 제안이있었습니다.

흠 ... 확실하지 않습니다-도와주세요 :)


16
Git의 브랜치는 특정 커밋의 레이블 일뿐입니다. 기본적으로 더 이상 필요하지 않으면 해당 "브랜치"(해당 커밋의 "레이블")를 삭제하면됩니다. 로컬 단지를 수행 git branch Issue#1 -d하고있다 그게 다야 - 더 코드 그냥 라벨이 저장소에서 제거, 손실되지 않습니다
marc_s

1
@marc_s 난 그냥 :) 그것의 답을 확인하는 것이 좋습니다
KingCrunch

그래서 @marc_s-당신은 일단 당신의 브랜치를 확인하고 브랜치가 밀렸을 때 표준 관행이 .. 우리가 그것을 삭제한다고 말하는 것입니까? 병합은 어떻습니까?
Pure.Krome 2011

@ Pure.Krome 적어도 "pull request is accepted"라는 말은 이미 병합되었다는 것을 의미합니다. 예, 물론,에 변경 사항을 통합 master, develop또는 어떤 개발 브랜치 (스쿼시없이 /와 병합, Rebase 현재 (), ...) 이름
KingCrunch

내가 '풀 요청이 수락 됨'이라고 말했을 때 .. 다른 곳에서 발생합니다. (즉, PR 된 모든 코드를 승인하는 담당 개발자 ...). 내 로컬 개발 시스템에서 마스터로 전환하고 병합도 수행해야하는지 궁금합니다.
Pure.Krome 2011

답변:


181

풀 리퀘스트를 요청하는 개발자에게 브랜치 삭제를 희망하는 상태를 요청합니다. 대부분의 경우 이것이 사실입니다. 분기가 필요한 경우가 있습니다 (예 : 변경 사항을 다른 릴리스 분기에 복사).

내 손가락은 우리의 과정을 기억했습니다.

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

지점은 업무용입니다. 태그는 시간의 장소를 표시합니다. 필요한 경우 각 분기 병합에 태그를 지정하여 분기를 부활시킬 수 있습니다. 분기 태그는 변경 사항을 검토하기 위해 여러 번 사용되었습니다.


8
최근에 절차를 변경했습니다. 사용 git push --tags은 무겁고 모든 태그를 다운로드합니다. 이것은 당신이 자신의 로컬 태그를 갖는 것을 어렵게 만듭니다. 대신 우리 git push origin branch-<feature-branch>는 하나의 태그 만 푸시 하는 데 사용 합니다.
Bill Door

따라서 마지막 줄에서는 이전에 <feature-branch>가 아닌 "branch- <feature-branch>"로 설정 한 기능 브랜치의 태그 이름을 사용해야합니다. 옳은?
Premier Bromanov

@PremierBromanov 마지막 줄은 원격 분기를 삭제하는 것입니다. @BillDoor가 사용한 태그를 기억하십시오 git push --tags.
Deivide

훌륭한 스크립트 !!
Kike Gamboa

41

예,을 실행하여 분기를 삭제하면됩니다 git push origin :branchname. 나중에 새로운 문제를 해결하려면 마스터에서 다시 분기하십시오.


3
로컬 브랜치가 아닌 원격 브랜치가 삭제됩니다.
KingCrunch

5
이것이 -2로 변경된 이유를 모르겠습니다. 이것이 정답입니다. 그들은 분명히 원격 지점을 가지고 있는데, 어떻게 PR을 발행 할 수 있습니까?
Ana Betts 2011

이 작업을 수행하고 git pull을 수행하면 로컬 브랜치도 삭제되지 않습니까? (편집 :. 나노, 당신이 자식 원격 자두를 실행하지 않는 한이 명시 적으로하지 않는 참조)
팀 키팅

1
지점 역사는 어떻게 되나요?
geoidesic

40

코드를 완료 한 후 먼저 분기를 마스터에 병합 한 다음 해당 분기를 삭제하십시오.

git checkout master
git merge <branch-name>
git branch -d <branch-name>

그리고 이것은 내 자신의 개발 컴퓨터에 있습니다. 새로운 코드를 받아들이는 사람은 .. 그의 기계는 다른 곳에 있습니다.
Pure.Krome 2011

2
다른 사람이 병합을 수행하는 경우 일반적으로 sender / branch-name과 같은 별도의 원격지에 분기 포인터가 있습니다. 그는 git remote prune sender당신이 한 후에도 그것을 제거하기 위해 사용해야 할 것 입니다. 대부분의 경우 그는 신경 쓸 필요가 없습니다.
jørgensen 2011

1
당신은 메인 트리에 통합을 담당하는 하나하지 않는 한 자신의 지점을 병합해서는 안됩니다. 그렇지 않고 다른 사람에게 통합을 요청한 경우 마스터 브랜치를 새로운 원격 커밋으로 업데이트 한 다음 가져 오기를 요청한 모든 내용을 포함해야합니다. 그런 다음 브랜치를 삭제하십시오. 이렇게하면 다른 사람이 변경해도 문제가 발생하지 않습니다.
ThiefMaster 2011-12-23
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.