레슨 30 · 회복
GitTree 실행 취소, 다시 실행 및 복구 스냅샷
GitTree의 툴바에서 커밋을 취소하고 다시 실행하여 앱이 되돌릴 수 있는 것과 없는 것, 거부하는 경우, 복구 스냅샷을 유지하는 이유를 알아보세요.
- 레벨: 중급
- 7분 읽음
- 6분 동영상
- 업데이트됨
- 이 수업 전에: 재설정: 소프트, 믹스, 하드, reflog로 손실된 커밋 찾기
이 브라우저에 진행 상황이 저장되었습니다.
재생하면 YouTube에서 동영상이 로드됩니다(개인정보 보호 강화 모드).
무엇을 배울 것인가
- 누르기 전에 다음 실행 취소 또는 다시 실행이 수행할 작업을 읽어보세요.
- 커밋을 실행 취소하면 변경 사항이 계속 단계적으로 유지되고 Redo가 커밋을 다시 가져올 수 있다고 예측합니다.
- 앱이 실행 취소 또는 다시 실행을 거부하는 이유를 인식하십시오. 브랜치가 이동되고, 파일이 변경되고, 리모컨이 변경되었습니다.
- 복구 스냅샷이 무엇인지, 오래된 스냅샷을 의도적으로 삭제하는 방법을 알아보세요.
시작하기 전에
당신은 깨끗한 작업 트리가 있는 18과 결과 M의 분기인 private/undo-demo에 있습니다. docs/signup-recovery.md이라는 작은 메모를 하나 만들고 through GitTree 커밋합니다. 왜냐하면 GitTree의 Undo는 기록된 단계부터 작동하기 때문입니다. 터미널에서 이루어진 커밋은 다른 것이며 해당 기록에 포함되지 않습니다.
모든 것이 로컬이며 무료 요금제(GitTree에서 로그인을 요청함)입니다. 호스팅 계정도 없고, 공급자도 없고, 인터넷도 없습니다. 모든 신원은 허구입니다(example.com). 실제 프로젝트에서는 이 강의를 실행하지 마세요.
동일한 사본에서 둘 다 수행하지 말고 GitTree 또는 기본 Git 명령을 사용하여 변경하십시오. 결과를 읽는 것은 항상 안전합니다. 메뉴 라벨, 툴팁 및 알림은 GitTree 2.0의 자체 문자열과 소스에서 나옵니다. 기본 명령은 일회용 복사본에서 Git 2.43을 사용하여 실행되었으며 앱 기록이 아닌 Git 모델만 표시합니다. GitTree 단계가 macOS, Windows 또는 Linux에서 실행되지 않았습니다.
개념 및 상태 효과
GitTree는 수행하는 단계의 journal를 유지합니다. 실행 취소는 최신 단계를 되돌리고, 다시 실행은 마지막에 실행 취소한 단계를 반복합니다. 도구 모음 도구 설명에는 "실행 취소: 커밋…"과 같이 단계 이름이 지정됩니다. 먼저 읽어 보십시오. 예상한 것과 다른 이름이 있으면 중지하십시오.
파괴적인 단계 전에 GitTree는 refs/ogt/trash/* 아래에 recovery snapshot을 저장하고 저널 항목을 작성합니다. 실행 취소는 해당 레코드에서 복원하고 그 이후로 아무것도 변경되지 않은 경우에만 해당 단계가 남아 있는 지점을 가리키는 경우에만 분기가 뒤로 이동되고 이후에 아무도 파일을 편집하지 않은 경우에만 파일이 복원됩니다. 그렇지 않으면 Undo가 이유로 거부되고 스냅샷이 유지됩니다.
commit을 실행 취소하면 분기가 뒤로 이동하고 커밋된 변경 사항이 준비된 상태로 유지되므로 아무것도 손실되지 않습니다. 해당 커밋을 다시 실행하면 분기가 동일한 커밋으로 다시 이동됩니다. 모든 단계를 다시 실행할 수 있는 것은 아니며 일부 단계는 실행 취소할 수 없습니다. 강제로 푸시하면 리모컨이 변경됩니다("다시 누르면 원래대로 변경됨"). 삭제된 숨김은 스냅샷으로 보관되지만 아직 실행 취소되지는 않습니다. 첫 번째 커밋에는 이전 상태가 없습니다. 도중에 중지된 단계에는 실행 취소할 완전한 결과가 없습니다.
스냅샷은 일정에 따라 삭제되지 않습니다. Delete Old Recovery Snapshots… 명령을 사용하면 기간을 선택하고, 어떤 스냅샷이 더 오래된지 정확히 표시하고, 확인한 후에는 해당 스냅샷만 삭제할 수 있습니다. 스냅샷을 삭제하면 해당 단계로 돌아가는 방법이 제거됩니다.
실행 취소 및 다시 실행은 로컬 저장소만 변경합니다. 아무것도 게시되지 않았습니다.
정확한 프로젝트 상태 준비
신뢰할 수 있는 18과 결과 M의 별도 일반 복사본에서 시작하고 원본은 그대로 둡니다. 가지를 만들고 메모를 작성합니다. DOC_LOST는 메모의 내용입니다.
완전한 파일 입력
아래에 명명된 단계에서만 저장하십시오. 이는 최종 개행 문자가 포함된 완전한 UTF-8/LF 본문입니다. 마크다운 펜스를 붙여넣지 마세요. 변경되지 않은 실행 가능 파일은 명명된 입력을 상속합니다. 별도의 변형 버전이 원본을 덮어쓰면 안 됩니다.
docs/signup-recovery.md — DOC_LOST
# Recovered signup work
Keep a branch name before leaving useful experimental work.GitTree에서
Command+Shift+P(Ubuntu에서는 Ctrl+Shift+P)를 사용하여 팔레트를 엽니다. Undo 및 Redo는 도구 모음과 팔레트에 있습니다. 단축키는 실행 취소의 경우 Command+Z이고 다시 실행의 경우 Command+Shift+Z 또는 Command+Y입니다(Windows 및 Linux에 대한 Ctrl 키).
- 별도의 복사본에서
private/undo-demo분기를 생성하고 DOC_LOST를docs/signup-recovery.md로 저장합니다. 변경 사항 목록을 엽니다. 파일이 새 것입니다. - 해당 파일만 준비하고 요약
docs: demonstrate a reversible local commit으로 커밋합니다. 실제 결과를 기다리십시오. - 툴바에서 Undo에 마우스를 올리세요. 툴팁에는 "실행 취소: 커밋…"이라고 표시됩니다. 다른 단계가 지정되면 중지하세요. 의도하지 않은 작업을 취소하지 마세요.
- Undo을(를) 한 번 선택하세요. 알림에는 "Undid: commit"이라고 표시되어 있습니다. 분기가 M으로 돌아왔고 메모는 삭제되지 않은 staged입니다.
- Redo에 마우스를 올리세요. 툴팁에는 "다시 실행: 커밋…"이라고 표시됩니다. Redo을 한 번 선택하세요. 알림에는 "Redid: commit"이라고 표시되어 있습니다. 커밋이 돌아왔고 작업 트리가 깨끗해졌습니다.
- Separate stale-state copy. 두 번째 복사본에서 1~4단계를 반복한 다음 GitTree 외부에서
git commit -m "docs: external move after app undo"을 사용하여 준비된 메모를 커밋합니다. Redo을 보세요. 비활성화되어 있으며 그 이유는 "이후 분기가 이동되었습니다. 실행 취소하면 해당 변경 사항을 덮어쓰게 됩니다."입니다. 강요하지 마십시오. - 팔레트를 열고 Delete Old Recovery Snapshots…을(를) 실행하세요. Older than (days)을 30으로 두고 Find을 선택합니다. 목록에 표시된 내용을 읽어 보십시오. "그렇게 오래된 스냅샷은 없습니다." 또는 오래된 목록. 대화 상자를 닫습니다. 수업을 마치기 위해 아무것도 삭제하지 마세요.
과정의 모든 일반적인 커밋에 대해: Summary는 명시된 주제이고, Description는 비어 있으며, 옵션 Amend Previous Commit, Skip Hooks, Add Signed-off-by, Different Author, Push After Commit 및 Allow Empty Commit는 꺼져 있습니다.
터미널에서
터미널은 앱의 저널을 사용하지 않습니다. 이것은 18과 결과의 깨끗한 복사본인 different 커밋 실행 취소 작업에 대한 일반 Git 모델입니다.
git switch --create private/undo-demo
BEFORE_SHA="$(git rev-parse HEAD)"DOC_LOST를 docs/signup-recovery.md로 저장한 후:
git add -- docs/signup-recovery.md
git commit --quiet -m "docs: demonstrate a reversible local commit"
AFTER_SHA="$(git rev-parse HEAD)"
git reset --soft "$BEFORE_SHA"
git status --shortA docs/signup-recovery.md브랜치가 돌아왔고 파일이 준비되었습니다. 다시 앞으로 나아갑니다:
git reset --soft "$AFTER_SHA"
git status --short상태가 비어 있습니다. 이 명령은 not 앱의 실행 취소 또는 다시 실행을 호출하고, GitTree 저널 항목을 기록하거나 스냅샷을 생성합니다. git for-each-ref refs/ogt/trash는 이 복사본에 아무것도 인쇄하지 않습니다. 앱에서 만든 테이크에는 변경하지 않고 읽을 수 있는 실제 스냅샷 이름이 나열됩니다.
부실한 단계에 대한 보호 장치는 비교 및 교체입니다. Git의 update-ref에는 동일한 아이디어가 있는데, 이는 기대한 값이 여전히 유지되는 경우에만 참조를 이동합니다. 외부 커밋 후:
git update-ref refs/heads/private/undo-demo "$AFTER_SHA" "$BEFORE_SHA"Git은 "참조를 잠글 수 없습니다. ...에 있지만 ...에 있을 것으로 예상됩니다."라고 거부합니다. GitTree 자신의 거부는 툴팁에 있는 것입니다: "그 이후로 분기가 이동되었습니다. 실행 취소하면 해당 변경 사항을 덮어쓰게 됩니다."
결과
Where you end: 첫 번째 복사본에서 메모는 커밋, 실행 취소(스테이징, M에서 분기) 및 다시 실행(커밋에서 분기, 트리 정리)되었습니다. 오래된 복사본에서는 브랜치가 이동하고 외부 커밋이 그대로 남아 있기 때문에 Redo가 거부되었습니다. 스냅샷 대화 상자를 열었다가 아무것도 삭제하지 않고 닫았습니다.
일반적인 실수
- 툴팁을 읽지 않고 실행 취소를 누르고 의도하지 않은 단계를 실행 취소합니다.
- 모든 작업을 취소하거나 다시 실행할 수 있다고 가정하면 강제 푸시와 삭제된 숨김은 그렇지 않으며 대부분의 단계에는 다시 실행이 없습니다.
- 실행 취소가 GitTree 외부 편집기에서 수행한 편집 내용을 포함할 것으로 예상됩니다.
- 정리를 위해 오래된 스냅샷을 삭제하면 되돌아가는 길이 사라집니다.
뭔가 잘못되면
실행 취소가 비활성화된 경우 도구 설명에서 이유를 읽어보세요. 분기가 이동되었거나, 이후 파일이 편집되었거나, 원격이 변경되었거나, 실행 취소할 항목이 없습니다. 단계가 거부되면 해당 복구 스냅샷은 refs/ogt/trash/* 아래에 보관됩니다. 확실하지 않은 경우 삭제하지 마십시오. GitTree 외부에서 이루어진 커밋의 경우 29과의 리플로그를 사용하세요.
이해도를 확인해보세요
각 질문에 답한 후 그 이유를 읽어보세요. '필수'라고 표시된 질문은 수업 완료에 반영됩니다.
6개 중 0개 정답
수업을 완료하려면 필수 질문에 올바르게 답하세요.
이 브라우저에서 확인했습니다.
연습
실행 취소 도구 설명의 내용, 실행 취소 후 분기 및 단계적 목록의 모습, 다시 실행이 수행한 작업을 기록해 보세요. 오래된 사본에 Redo가 제공한 이유를 적습니다. 그런 다음 앱에서 실행 취소할 수 없는 단계 하나를 말하고 그 이유를 말하세요.
귀하의 확인: 사이트에서 귀하의 컴퓨터를 볼 수 없습니다.
수업을 완료하려면 필수 질문에 올바르게 답하고 실제 연습을 확인하세요.
요약
- 누르기 전에 툴팁을 읽어보세요.
- 커밋을 실행 취소하면 변경 사항이 스테이징된 상태로 유지됩니다.
- 이동된 브랜치나 편집된 파일로 인해 실행 취소가 거부됩니다. 스냅샷이 보관됩니다.
관련된
용어집 소개
실행 취소 — تراجع; 다시 실행 - إعادة; 저널 — سجل العمليات; 복구 스냅샷 — لقصة استعادة.
비디오 대본
영상의 나레이션, 큐별로.
성적표 표시
- GitTree은 몇 단계 뒤로 물러날 수 있습니다. 여기는 어떻게, 어디서 멈추는지.
- GitTree는 자체 단계를 기록합니다. 실행 취소는 최신 항목을 되돌립니다.
- 위험한 단계 이전에 복구를 저장합니다. 먼저 스냅샷.
- 우리는 가지와 새로운 메모를 가지고 있습니다.
- 해당 파일만 준비하세요.
- 요약을 작성하세요. 모든 옵션이 유지됩니다 꺼져.
- GitTree 자체에서 한 번 커밋합니다.
- 터미널에서 이루어진 커밋은 여기에 없습니다. 기록.
- 실행 취소를 가리키세요. 도구 설명에는 단계 이름이 표시됩니다. 커밋하다.
- 다른 이름이 붙으면 중지하세요.
- 실행 취소를 한 번 선택합니다. 공지에는 취소되었다고 되어있습니다 커밋하다.
- 지점이 M으로 돌아왔습니다.
- 그리고 메모는 삭제되지 않고 준비됩니다. 아무것도 손실되지 않습니다.
- 이제 Redo는 동일한 커밋의 이름을 지정합니다.
- 다시 실행을 한 번 선택합니다. 커밋이 돌아왔습니다.
- 작업 트리가 다시 깨끗해졌습니다.
- 두 번째 복사본에서는 다음을 커밋하고 실행 취소합니다. 같은 방식으로.
- 이제 외부에서 준비된 메모를 커밋합니다. GitTree.
- 다시 실행이 비활성화되었습니다. 그 이후로 지점이 이전되었습니다.
- 커밋은 그대로 둡니다. 절대 강요하지 마세요 그것.
- 기타 이유: 파일 편집, 원격 변경되었습니다. 첫 번째 커밋입니다.
- 이제 스냅샷입니다. 이전 복구 삭제 실행 스냅샷.
- 나열된 스냅샷만 삭제되었습니다.
- 30일을 두고 찾기를 선택합니다.
- 닫으세요. 그 자체로는 만료되는 것이 없습니다.
- 일반 Git 복사본에서 소프트 재설정은 다음을 제공합니다. 같은 모양.
- 다시 앞으로 나무가 깨끗하고 앱 스냅샷이 없습니다.
- Git은 같은 방식으로 심판을 보호합니다. 이동하세요. 그것이 당신이 기대하는 것을 유지하는 경우에만.
- 실행 취소는 전역 되감기가 아닙니다. 그것은 반전 앱이 녹음한 단계를 확인하세요.
- 연습: 툴팁 작성, 결과 실행 취소, 다시 실행 및 오래된 이유.
- 다음으로 분리된 HEAD의 의미입니다.