GitHub에서 삭제된 분기를 체크아웃할 수 있는 이유는 무엇입니까?

GitHub에서 삭제된 분기를 체크아웃할 수 있는 이유는 무엇입니까?

GitHub 저장소에서 동료가 브랜치를 삭제했습니다 release. 하지만 git checkout release로컬에서 실행하면 항상 삭제된 브랜치가 표시됩니다 release. 마찬가지로 다른 브랜치를 체크아웃할 때도 해당 release브랜치를 삭제 git branch -D release하고 다시 실행해 보세요 git checkout release.

GitHub 저장소에 수정해야 할 사항이 있나요? 아니면 로컬에서 수정해야 하나요?

답변1

원격 측에서 분기를 삭제한 후에도 이전에 로컬로 가져온 원격 분기가 계속 표시될 수 있습니다. 다음을 참조하세요.

$ git branch -a
[...]
release
remotes/origin/release
[...]

"릴리스"만 삭제했지만 "원격/원본/릴리스"는 삭제하지 않았습니다. 다음과 같이 삭제해 주세요.

$ git branch -rd origin/release

또는 삭제모두원격 측에 더 이상 존재하지 않는 분기를 가져옵니다.

$ git remote prune origin 

답변2

원격으로 브랜치를 삭제하는 경우 로컬 저장소를 정리해야 합니다. 가장 쉬운 방법은 다음을 사용하는 것입니다.

git fetch -p

이렇게 하면 원격 저장소에 대한 모든 변경 사항으로 로컬 저장소가 업데이트되지만 로컬 브랜치는 업데이트되지 않습니다. 이것을 실행한 후,

git branch --remote

삭제된 원격 지점은 더 이상 표시되지 않습니다.

자체 시스템에서든 서버에서든 git 저장소가 완성됩니다. 따라서 처음으로 저장소를 복제하면 완전한 복사본을 얻게 되며 로컬 git은 로컬 분기뿐만 아니라 모든 원격 분기도 "알게" 됩니다. 이 정보는 자동으로 동기화되지 않으므로 동료가 release서버의 브랜치를 삭제해도 로컬 git 저장소는 release원격 브랜치의 개념을 잃지 않습니다. 동기화는 git fetch원격 지점의 모든 로컬 정보를 업데이트하여 서버(엄격히 말하면 원격 저장소 등)의 상태와 일치하지만 원격 지점의 로컬 정보는 삭제하지 않습니다. git fetch -p(또는 git fetch --prune, 또는 )을 사용하여 정리하면 git remote prune삭제된 원격 분기의 로컬 정보가 제거됩니다.

답변3

Tim: Git은 분산형 VCS이므로 원격에서 로컬로 리포지토리를 복제하면 모든 것(기록)이 복제됩니다. 따라서 저장소를 복제하면 release라는 분기가 생깁니다. 동료가 원격으로 릴리스 브랜치를 삭제했으므로 git fetch -p명시적으로 정리하거나 삭제할 때까지 로컬에서 브랜치를 갖게 됩니다.

답변4

주제에서 약간 벗어난 것일 수도 있지만 이 사이트의 관점은 분기 삭제에 대한 일반적인 주제를 이해하는 데 도움이 될 수 있습니다.

http://railsware.com/blog/2014/08/11/git-housekeeping-tutorial-clean-up-outdated-branches-in-local-and-remote-repositories/

여기서 이미 논의한 내용과 일부 겹치는 부분이 있지만 관리에 중점을 두고 있습니다. 즉, 공동 작업 환경에서 더 이상 필요하지 않은 원격 및 로컬 분기를 삭제하는 것입니다. 특히 이 git branch --merged명령은 메인라인(또는 관심 있는 모든 브랜치)에 병합되어 삭제해도 안전한 브랜치를 식별합니다. 공동 작업하는 경우 이와 같은 더 멋진 미니 스크립트 중 일부는 내용을 훌륭하고 소화하기 쉬운 형식으로 표시하고 날짜와 작성자를 포함합니다.

for branch in `comm -12  <(git branch --merged|awk '{print($1)}') <(git branch -r --merged|awk '{print($1)}'|awk -F \/ '{print($2)}')`; do echo -e `git show --format="%ci %cr %an" $branch | head -n 1` \\t$branch; done | sort -r

(안타깝게도 "좋고 이해하기 쉽다"는 스크립트 자체의 형식에는 적용되지 않습니다.)

관련 정보