Git에서 분기의 "삭제"는 무엇을 의미합니까?
저장소에서 사라지나요? 아니면 여전히을 통해 탐색 할 수 git branch
있습니까?
내가 정말로하고 싶은 것은 브랜치를 "막 다른 끝"으로 표시하는 것입니다. 즉, 브랜치가 마스터와 너무 멀어서 그 브랜치 아래에 좋은 아이디어가 있었지만 누구도이를 시작점으로 사용해서는 안됩니다. 참고 용으로 보관하고 싶습니다.
답변:
분기를 삭제할 수 있지만 먼저 태그를 지정하여 기록이 사라지지 않도록합니다. 이렇게하면 브랜치가 브랜치 목록에 표시되지 않으므로 사람들이 작업하는 것을 막을 수 있지만 작업은 영구적으로 지워지지 않습니다 (가비지 수집이 실행 된 후에도). 예를 들어 관련성이 없어진 브랜치가 있지만 영구적으로 삭제할 준비가되지 않은 경우 "archive / < branch-name >" 으로 태그를 지정합니다 .
master
또는 다른 지점 에있는 동안 :
git tag archive/foo foo
git branch -D foo
이렇게하면 삭제하기 전에 분기 archive/foo
에서 이름이 지정된 태그가 생성 됩니다. 태그에 메시지를 추가하여 브랜치에 무엇이 있는지, 왜 존재했는지, 왜 이제 막 다른 길인지 등을 설명 할 수 있습니다.foo
foo
git tag -m 'Foo is deprecated in favor of bar' archive/foo foo
분기가 더 이상 사용되지 않는 이유를 기록하는 기능은 분기를 대체 네임 스페이스로 이동하는 것보다 태그를 지정하는 것의 장점 일 수 있습니다.
이런 방식으로 보관 된 브랜치를 부활시켜야한다면 다음과 같이 간단합니다.
git branch foo archive/foo
git tag -d archive/foo # Optional
이제 분기가 삭제되지 않은 것처럼 돌아 왔습니다.
Git 브랜치는 개정에 대한 참조로 저장됩니다. 분기를 삭제하면 참조가 제거됩니다. 해당 개정판을 참조하는 다른 항목이 없으면 결국 가비지 수집됩니다. 또한 브랜치를 삭제하면 리포지토리에서 제대로 사라집니다. 분기를 더 이상 사용되지 않음으로 표시하고 나중에 사용할 수 있도록 유지하려면 분기를 하위 디렉토리로 이동할 수 있습니다.
$ git branch
* master
testing_feature_one
testing_feature_two
$ git branch -m testing_feature_one deprecated/testing_feature_one
$ git branch
deprecated/testing_feature_one
* master
testing_feature_two
또는 더 이상 사용되지 않는 브랜치에 대한 별도의 저장소를 생성하고이를 가져와 원본에서 삭제할 수 있습니다. 두 경우 모두 브랜치를 팔로우하는 모든 사용자에게 영향을 미칠 것입니다. 저장소의 내용은 변경되지 않고 브랜치 이름도 변경되지 않지만 다시 가져 오려고하면 구성에서 대상을 변경해야합니다.
git branch -D <branchName>
저장소에서 브랜치를 삭제합니다. 더 이상 보거나 탐색 할 수 없습니다. 또한 해당 분기에서 변경 한 모든 파일을 잃게됩니다.
git 브랜치를 통해 탐색 할 수 없으며 가비지 수집이 수행 될 때까지 저장소에서 손실되지 않습니다.
문제의 브랜치를 막 다른 골목으로 표시하고 싶다면 그냥 그렇게하세요 (git가 당신을 위해 이것을 할 수는 없지만 확실히 할 수 있습니다)!
(원하는 방식으로) 역사 참고 자료로 레이블을 지정하면 작동합니다.
--tags
옵션 사용git push
) 한 다음 원격 브랜치를 삭제 (:<branch-to-delete>
푸시하는 동안 refspec 사용)하여 원격 저장소와 함께 작동 할 수도 있습니다 . 예 :git tag archive/foo foo; git branch -D foo; git push --tags origin :foo