prosource

분기 git를 삭제하면 기록에서 제거됩니까?

probook 2023. 7. 7. 19:07
반응형

분기 git를 삭제하면 기록에서 제거됩니까?

svn에서 왔고, git에 익숙해지기 시작했습니다.

git에서 분기가 삭제되면 기록에서 제거됩니까?

svn에서는 삭제 작업(역 병합)을 되돌려서 분기를 쉽게 복구할 수 있습니다.svn의 모든 삭제와 마찬가지로 분기는 실제로 삭제되지 않고 현재 트리에서 제거됩니다.

분기가 기록 git에서 실제로 삭제되면 해당 분기에서 병합된 변경 사항은 어떻게 됩니까?보유하고 있습니까?

분기는 git를 커밋하기 위한 포인터일 뿐입니다.각 커밋에 완전한 소스 트리가 있는 git는 모든 분기 및 태그(컨벤션 기준)가 특별한 '트렁크'와 함께 저장소의 별도 '폴더'에 상주하는 svn과는 매우 다른 구조입니다.

분기가 삭제되기 전에 다른 분기로 병합된 경우 첫 번째 분기가 삭제될 때 다른 분기에서 모든 커밋에 연결할 수 있습니다.그들은 정확히 원래대로 유지됩니다.

분기가 다른 분기로 병합되지 않고 삭제되면 해당 분기의 커밋(아직 도달할 수 있는 커밋에서 분기된 지점까지)이 더 이상 표시되지 않습니다.

커밋은 저장소에 계속 유지되며 삭제 후 즉시 복구할 수 있지만 최종적으로 가비지 수집됩니다.

Git에서 분기는 커밋의 방향성 비순환 그래프(DAG)에서 커밋에 대한 포인터(참조)일 뿐입니다.커밋에 할 수 않을 수 있음을 합니다.", "DGA"와 "DAG"는 각각의 계정에서 사용됩니다.할 수 없는 " 그러삭분예있적커모도은밋제어때거될커밋까도이수저지남에장소있다사용니아습는할달든없던나된제에기예▁but▁woulde▁geted▁unre▁still▁that: ").git gc).

:git branch -d분기를 삭제해도 연결할 수 없는 커밋이 남지 않을 경우 삭제를 거부합니다.을 사용해야 합니다.git branch -D연결할 수 없는 커밋을 남길 수 있는 경우 분기를 강제로 삭제합니다.

또한 도달할 수 없는 커밋이 있는 경우 삭제된 분기의 마지막 끝과 기존의 다른 분기, 태그가 지정된 커밋 또는 분기점 중 나중에 병합된 커밋 사이의 커밋일 뿐입니다.예를 들어 다음과 같은 경우:

----O------*------/M----* <-- 마스터 <--HEAD\            /\--------------/x---y <-- 삭제된 분기

분기를 삭제한 후에는 커밋 'x' 및 'y'에만 도달할 수 없습니다.

내에서 삭제된 분기에서 작업한 경우gc.reflogExpire기간, 기본 90일, HEAD reflog에 삭제된 분기의 마지막 팁이 기록됩니다(참조).git reflog show HEAD또는git log --oneline --walk-reflogs HEADHEAD reflog를 사용하여 삭제된 포인터를 복구할 수 있어야 합니다.또한 이 경우 삭제된 분기에서만 도달할 수 없는 커밋이 다음과 같은 경우에 제거(제거)되지 않도록 보호됩니다.gc.reflogExpireUnreachable기간(기본값은 30일)입니다.

HEAD에 대한 reflog에서 방금 삭제된 분기의 팁을 찾을 수 없는 경우 다음을 사용할 수 있습니다.git fsck"연결 불가능한 커밋 <sha1>을 찾고, (을 통해) 검토합니다.git show <sha1>또는git log <sha1>) 삭제된 분기의 팁을 찾습니다.

삭제된 분기의 끝을 찾는 방법에 따라 삭제를 취소하거나 다음을 사용하여 방금 삭제된 분기를 다시 만들 수 있습니다.

git branch <deleted-branch> <found-sha1-id>

그러나 분기에 대한 reflog는 손실됩니다.


Git-Resurve도 있습니다.sh 스크립트 인contrib/지정된 이름으로 분기 팁의 흔적을 찾고 다시 활성화(재생)하는 데 도움이 됩니다.

실수로 지점이 삭제되어 더 이상 보고서의 로컬 복사본이 없는 경우, Gerrit와 같은 기업 Git 서버에 대한 확장 기능이 있습니다. Gerrit은 기록 재작성 및 지점 삭제를 감지하고, 필요한 경우 복구할 수 있으며, 가비지 수집에 의해 제거되지 않도록 특수 참조 하에 해당 서버를 백업합니다.Gerrit 관리자는 법적 이유로 필요한 경우 선택한 커밋을 제거할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2613903/does-deleting-a-branch-in-git-remove-it-from-the-history

반응형