히스토리 재작성

GitGitBeginner
지금 연습하기

💡 이 튜토리얼은 영어로 번역되었습니다. 원본을 보려면 영어로 전환

소개

시간 여행을 하는 Git 탐험가 여러분, 환영합니다! 여러분은 극비 프로젝트의 엉망진창인 커밋 기록을 정리하는 중요한 임무를 맡았습니다. 여러분의 목표는 새롭게 습득한 Git 능력, 특히 대화형 리베이스 (interactive rebasing) 기술을 사용하여 혼란스러운 타임라인을 명확하고 간결한 기록으로 변환하는 것입니다.

과거를 다시 쓸 수 있는 역사가라고 상상해 보세요. 여러분의 임무는 일련의 흩어진 사건들을 가져와서 일관된 이야기로 재구성하는 것입니다. Git 의 대화형 리베이스 기능을 사용하여 정확히 그렇게 할 것입니다. 관련 커밋을 결합하고, 불필요한 커밋을 제거하며, 커밋 메시지를 다시 작성하여 프로젝트 개발에 대한 더 명확한 이야기를 전달할 것입니다.

타임스트림으로 뛰어들어 깔끔하게 정리된 Git 기록을 가지고 나올 준비가 되셨나요? 시간 여행 모험을 시작해 봅시다!

이것은 챌린지입니다. 실험 (Lab) 과 달리, 학습을 위해 실험의 단계를 따르는 것이 아니라, 독립적으로 챌린지 작업을 완료해야 합니다.챌린지는 일반적으로 조금 어렵습니다. 어려움을 겪었다면, Labby 와 논의하거나 해결책을 확인할 수 있습니다. 과거 데이터에 따르면, 이것은 초급 레벨의 챌린지이며 통과율은 94.54%입니다.학습자들로부터 90.91%의 긍정적인 리뷰율을 받았습니다.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/rebase("Reapply Commits") subgraph Lab Skills git/commit -.-> lab-387746{{"히스토리 재작성"}} git/log -.-> lab-387746{{"히스토리 재작성"}} git/rebase -.-> lab-387746{{"히스토리 재작성"}} end

타임라인 정리

과제

챌린지 레포지토리는 ~/project/time-travel-git에 설정되어 있습니다. 다음 명령을 실행하여 초기 커밋 기록을 확인하십시오.

cd ~/project/time-travel-git
git log --oneline

다음 4 개의 커밋이 표시되어야 합니다 (커밋 해시는 다를 것입니다).

886c6ad (HEAD -> master) Add project description
3a87b84 Add project codename
6b4cbb9 Fix typo in project name
0d71e5e Start secret project

다음은 여러분의 임무입니다.

  1. 가장 오래된 두 개의 커밋 ("Start secret project" 및 "Fix typo in project name") 을 "Initialize secret project"라는 메시지로 하나의 커밋으로 결합합니다.
  2. "Add project codename" 커밋을 "Add project codename: Chronos"로 변경합니다.
  3. 가장 최신 커밋 ("Add project description") 은 그대로 유지합니다.

요구 사항

이 임무를 성공적으로 완료하려면 다음 요구 사항을 준수해야 합니다.

  • 모든 작업은 ~/project/time-travel-git 디렉토리에서 수행해야 합니다.
  • 커밋 기록을 정리하려면 git rebase -i (대화형 리베이스) 명령을 사용해야 합니다.
  • 최종 기록은 원래 4 개가 아닌 정확히 3 개의 커밋을 가져야 합니다.
  • 파일의 내용은 변경되지 않아야 합니다. 커밋 기록만 수정하는 것입니다.
  • 챌린지가 완료되면 git log --oneline을 실행하면 올바른 메시지가 있는 3 개의 커밋이 표시되어야 합니다.

힌트

다음은 챌린지를 진행하는 데 도움이 되는 몇 가지 힌트입니다.

  1. 대화형 리베이스를 사용하면 기록에서 커밋을 조작할 수 있습니다. 기본 명령 형식은 다음과 같습니다.

    git rebase -i <commit>

    여기서 <commit>은 수정하려는 첫 번째 커밋 이전의 커밋입니다. 맨 처음 커밋부터 수정하려면 다음을 사용할 수 있습니다.

    git rebase -i --root
  2. 대화형 리베이스 화면에서 작업과 함께 커밋 목록이 표시됩니다. 일반적인 작업은 다음과 같습니다.

    • pick - 커밋을 그대로 사용
    • reword 또는 r - 커밋을 사용하지만 메시지를 변경
    • squash 또는 s - 이 커밋을 이전 커밋과 결합
    • fixup 또는 f - squash 와 유사하지만 이 커밋의 메시지를 버림
  3. 커밋을 결합하려면 두 번째 커밋에서 squash 또는 fixup을 사용할 수 있습니다.

  4. 커밋 메시지를 변경하려면 reword 작업을 사용합니다.

  5. 리베이스 계획을 설정한 후 편집기를 저장하고 닫습니다. Git 은 나머지 프로세스를 안내하며, 커밋 메시지를 편집하는 데 필요한 새 편집기 창을 엽니다.

  6. 리베이스 중에 실수를 하면 항상 다음 명령으로 중단하고 다시 시작할 수 있습니다.

    git rebase --abort

예시

챌린지를 완료한 후 git log --oneline은 다음과 유사하게 표시되어야 합니다 (커밋 해시는 다름).

abc1234 Add project description
def5678 Add project codename: Chronos
ghi9101 Initialize secret project
✨ 솔루션 확인 및 연습

요약

이 챌린지에서 여러분은 Git 역사를 통해 시간을 거스르는 여정을 시작했습니다. 여러분은 과거를 재구성하고 더 깨끗하고 논리적인 커밋 기록을 만들 수 있는 강력한 도구인 대화형 리베이스 (interactive rebasing) 기술을 마스터했습니다.

커밋을 결합하고, 메시지를 다시 작성하고, 변경 사항을 재구성함으로써, 여러분은 엉망진창이었던 일련의 사건들을 일관된 이야기로 변환했습니다. 이 기술은 깨끗하고 이해하기 쉬운 기록을 유지하는 것이 협업과 프로젝트 관리를 크게 향상시킬 수 있는 실제 프로젝트에서 매우 중요합니다.

큰 힘에는 큰 책임이 따른다는 것을 기억하십시오. 기록을 다시 쓰는 것은 로컬 브랜치 또는 개인 프로젝트에 유용할 수 있지만, 공유 브랜치에서는 신중하게 사용해야 합니다. 공유 기록을 수정하기 전에 항상 팀과 소통하십시오.

Git 모험을 계속하면서 이러한 기술을 연마하십시오. 역사를 조작하는 능력은 단순히 정리하는 것만이 아니라, 프로젝트의 진화를 명확하게 설명하는 것입니다. 여러분의 미래 Git 기록은 깨끗하고, 병합은 충돌 없이, 커밋은 항상 의미 있기를 바랍니다!

OSZAR »