콘텐츠로 건너뛰기
GitTree

레슨 16 · 일상 업무

로컬 커밋 메시지 또는 콘텐츠 수정

이전 팁을 유지하면서 하나의 비공개 Hero 커밋에서 오타와 메시지를 수정합니다. 수정이 정체성을 대체하는 이유와 관련되지 않은 준비된 콘텐츠가 유지되어야 하는 이유를 알아보세요.

이 브라우저에 진행 상황이 저장되었습니다.

재생하면 YouTube에서 동영상이 로드됩니다(개인정보 보호 강화 모드).

영어 내레이션 · English and Arabic 캡션

비디오 페이지 열기YouTube에서 시청하기

무엇을 배울 것인가

  • 교체되는 커밋을 검사합니다.
  • 수정된 내용을 메시지 전용 편집과 분리하세요.
  • 이전에 커밋된 팁을 유지합니다.
  • 새로운 신원과 변경되지 않은 부모를 확인하십시오.

시작하기 전에

분기 시나리오/수정에 대한 15과 결과의 별도 사본에서 시작합니다. 전체 HEADING_DRAFT 페이지가 수정사항으로 커밋됩니다: hedaing; 작업 트리가 깨끗하고 커밋이 게시되지 않았습니다. 초안 팁을 정확하게 나타내는 구조/수정 전 이름.

동영상은 Ubuntu 24.04에서 Git 2.52.0 및 GitTree 2.0으로 녹화되었습니다. 수정, 수정 및 메시지 전용 편집은 앱에서 수행되었습니다. 초안, 구조 지점 및 수표가 터미널에서 실행되었습니다. macOS 또는 Windows에서는 아무것도 실행되지 않았으며 Ubuntu는 기록된 유일한 Linux 시스템입니다. GitTree의 소스 Git 층은 2.39.0입니다.

GitTree에서 로그인을 요청합니다. 그러면 무료 플랜이 여기의 모든 단계를 다룹니다. 공급자 계정, Pro/평가판, API 자격 증명 또는 인터넷 서비스가 필요하지 않습니다. 로컬 베어 원본은 GitLab 또는 CI가 아닙니다. 모든 ID는 example.com을 사용합니다. 소스 체크아웃 내에서 이 강의를 실행하지 마세요.

연속해서가 아닌 동일한 입력에서 GitTree 또는 기본 경로를 통해 변형을 만듭니다. 읽기 전용 확인은 둘 중 하나를 따를 수 있습니다. 터미널 작업으로 설명되는 모든 준비는 기본 준비로 표시되며 결코 발명된 앱 기능이 아닙니다.

개념 및 상태 효과

Amend는 현재 인덱스의 마지막 커밋에 대한 대체 항목을 작성합니다. 이전 커밋에 작은 수정 기록을 추가하지 않습니다. 콘텐츠와 메시지는 함께 변경될 수 있지만 이전 개체는 복구 참조를 통해 계속 접근할 수 있습니다.

메시지 전용 편집에는 관련되지 않은 단계적 변경 사항이 자동으로 포함되어서는 안 됩니다. 앱의 Edit Commit Message… 경로는 선택한 커밋/하위 항목을 다시 작성합니다. 이는 여기에 설명된 Composer의 이전 커밋 경로 수정과 다릅니다.

여기서 변경된 주체는 다른 객체 동일성을 보장합니다. 동일한 부모가 동일한 커밋을 의미하지는 않습니다. 다른 사람이 이미 작업한 내용을 기반으로 게시된 커밋을 무해한 편집으로 수정하도록 가르치지 마세요.

새 인덱스 콘텐츠는 대체 커밋이 됩니다. 시나리오 분기/HEAD는 이전 C→C'로 이동하고 상위는 M으로 유지되며 작업/인덱스는 정리됩니다. 구조대는 C로 남아 있다. 원래 메인/서버는 변경되지 않았습니다.

정확한 프로젝트 상태 준비

15과에서 남긴 클린 프로젝트의 별도의 일반 복사본에서 시작하세요. 원래 gittree 기능은 그대로 유지됩니다. 원본 또는 소스 체크아웃에서는 이 시나리오를 실행하지 마십시오. (강좌의 이전 계획은 이후 병합 강의 결과에서 이 강의를 시작했습니다. 해당 강의는 아직 녹화되지 않았으므로 비디오에서는 강의 15의 프로젝트와 동일한 단계를 사용합니다.) 아래 두 페이지 본문은 영웅 제목만 변경된 프로젝트의 index.html입니다. Repo-local 데모 서명이 꺼져 있고 GitTree Demo <demo@example.com>이 ID입니다.

완전한 파일 입력

아래에 명명된 단계에서만 저장하십시오. 이는 최종 개행 문자가 포함된 완전한 UTF-8/LF 본문입니다. 마크다운 펜스를 붙여넣지 마세요. 변경되지 않은 실행 가능 파일은 명명된 입력을 상속합니다. 별도의 변형 버전이 원본을 덮어쓰면 안 됩니다.

index.html - HEADING_DRAFT

파일 발췌 · html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>GitTree Features — course demo</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header class="site-header">
    <a href="#main">GitTree Features</a>
  </header>
  <main id="main">
    <section class="hero" aria-labelledby="hero-title">
      <p class="eyebrow">GitTree Learn demo project</p>
      <h1 id="hero-title">See your work cleary.</h1>
      <p id="hero-copy">Choose one change, then check what Git saved.</p>
    </section>
    <section class="features" aria-labelledby="features-title">
      <h2 id="features-title">Follow your work</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>History</h3>
          <p>Read commits and branches together.</p>
        </article>
        <article class="feature-card">
          <h3>Changes</h3>
          <p>Review the exact content selected for a commit.</p>
        </article>
        <article class="feature-card">
          <h3>Recovery</h3>
          <p>Inspect the scope of a recovery point before using it.</p>
        </article>
      </div>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn. Review one change at a time.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

index.html - HEADING_FIXED

파일 발췌 · html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>GitTree Features — course demo</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header class="site-header">
    <a href="#main">GitTree Features</a>
  </header>
  <main id="main">
    <section class="hero" aria-labelledby="hero-title">
      <p class="eyebrow">GitTree Learn demo project</p>
      <h1 id="hero-title">See your work clearly, one change at a time.</h1>
      <p id="hero-copy">Choose one change, then check what Git saved.</p>
    </section>
    <section class="features" aria-labelledby="features-title">
      <h2 id="features-title">Follow your work</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>History</h3>
          <p>Read commits and branches together.</p>
        </article>
        <article class="feature-card">
          <h3>Changes</h3>
          <p>Review the exact content selected for a commit.</p>
        </article>
        <article class="feature-card">
          <h3>Recovery</h3>
          <p>Inspect the scope of a recovery point before using it.</p>
        </article>
      </div>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn. Review one change at a time.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

GitTree에서

팔레트: Command+Shift+P(Ubuntu에서 Ctrl+Shift+P); 정확한 이름의 명령을 입력하고 선택하십시오. 명명된 참조 작업은 인수가 없는 팔레트 바로 가기가 아닌 해당 행의 상황에 맞는 메뉴를 사용합니다.

  1. 아래와 같이 개인 초안 및 구조 지점을 준비하십시오. 초안이 포함된 리모컨이 없는지 확인하세요.
  2. 파일 표시 → index.html; 다른 모든 페이지 콘텐츠를 유지하면서 전체 HEADING_FIXED를 저장하세요.
  3. 작업 변경 사항 표시; 의도된 제목 교체와 스테이지 파일 index.html만 검사하세요.
  4. 작성기에서 Amend Previous Commit을 확인하세요. 이전 그래프 선택이 아니라 대체되는 실제 마지막 커밋을 검사하세요. (이 빌드에서는 요약 필드가 이전 메시지로 채워지지 않습니다. 다음 단계에서 새 메시지를 작성합니다.)
  5. 요약 수정 설정: 영웅 제목을 명확히 합니다. 푸시/사인오프/후크 우회 및 기타 선택적 동작을 꺼두세요. 준비된 내용을 검토합니다.
  6. 작성기에서 Command+Enter(Ubuntu에서 Ctrl+Enter)를 눌러 한 번 제출하세요. 실제 완료를 기다립니다. 두 번째 일반 커밋을 제출하지 마세요. 이전 커밋 수정 옵션은 나중에 자동으로 꺼집니다.
  7. 실제 C'가 구조 C와 다르고 동일한 상위, 전체 HEADING_FIXED 및 정리 작업을 확인하십시오. 나중에 일반 작업을 수행하기 전에 Amend Previous Commit을 끄십시오.
  8. 초안이 아직 있는 별도의 복사본에서 메시지 전용 대안: 초안 커밋을 마우스 오른쪽 버튼으로 클릭 → Edit History → Edit Commit Message…. 대화 상자의 제목은 커밋의 짧은 ID인 "Edit Message of"이며 커밋과 그 위의 모든 커밋이 새 ID를 얻음을 나타냅니다. Message를 정확하게 수정된 제목으로 바꾸고 Save Message을 선택하세요. 트리와 부모는 동일하게 유지됩니다. ID와 메시지만 변경됩니다. 수정된 결과에 대해 이를 반복하지 마십시오.

모든 일반 커밋의 경우: 요약이 명시된 주제입니다. 설명이 비어 있습니다. 이전 커밋 수정, 후크 건너뛰기, 서명자 추가, 다른 작성자, 커밋 후 푸시 및 빈 커밋 허용 끄기; 공동저자는 없습니다. 명명된 파일만 준비한 다음 N개 파일에 대한 변경 사항을 한 번 커밋(파일은 1개)하거나 Command+Enter를 누르세요. 실제 결과를 기다리십시오. 명시된 옵션만 변경하여 명시적으로 수정하는 수업입니다.

터미널에서

15과 결과의 별도 사본에서:

Command · bash
git switch --create scenario/amend

HEADING_DRAFT를 index.html 위에 배치합니다(동영상에서는 강의 파일을 ~/Downloads에 저장하고 cp ~/Downloads/HEADING_DRAFT.html index.html를 사용함).

Command · bash
git add -- index.html
git commit --quiet -m "fix: hedaing"
git branch rescue/before-amend

전체 HEADING_FIXED를 저장한 후:

Command · bash
git add -- index.html
git commit --quiet --amend --message "fix: clarify the hero heading"
git log -1 --format=%s
git rev-parse HEAD rescue/before-amend HEAD^ rescue/before-amend^
git status --short

관찰 대상:

출력
fix: clarify the hero heading

처음 두 개의 SHA 출력은 다릅니다. 마지막 두 사람은 동의합니다. 전체 기록 파일은 HEADING_FIXED와 동일합니다. 깔끔하게 작업하세요. 별도의 깨끗한 초안 복사본의 기본 메시지 전용 대안은 git commit --amend --only -m "fix: 명확히 영웅 제목 지정"을 사용합니다. --only는 해당 메시지 전용 작업에 대해 관련되지 않은 단계적 경로를 포함하지 않습니다. 앱의 그래프 재워드 작업은 고유한 소스 지원 경로입니다. 설치된 빌드에서 확인하십시오.

결과

Where you end: 교체 커밋에 수정 내용이 있음: 영웅 제목을 명확히 하고 전체 HEADING_FIXED를 포함합니다. 상위는 이전 커밋의 상위와 일치하고 ID는 다릅니다. 오래된 팁이 구출되었습니다. 깨끗하고 출판되지 않았습니다.

일반적인 실수

  • 관련되지 않은 준비된 파일로 수정합니다.
  • 대체 창을 원래 검사점으로 처리합니다.
  • 앱 성공 후 완료된 변형을 반복합니다.

뭔가 잘못되면

구조 지점에서는 이전에 커밋된 초안에 이름을 지정합니다. 수복물을 선택하기 전에 비교하십시오. 임의의 단계화되지 않은 편집 내용은 유지되지 않습니다. 후크/서명에 실패하는 경우 실제 출력을 검사하고 교훈과 일치하도록 우회하지 마십시오.

이해도를 확인해보세요

각 질문에 답한 후 그 이유를 읽어보세요. '필수'라고 표시된 질문은 수업 완료에 반영됩니다.

  1. 질문 1/6

    수정은 무엇을 창조하는가?

    답을 하나 선택하세요.

  2. 질문 2/6

    무엇을 검토해야 합니까?

    해당하는 답을 모두 선택하세요.

  3. 질문 3/6
    필수

    수정된 C'의 부모?

    답을 하나 선택하세요.

  4. 질문 4/6
    필수

    수정하기 전에 관련 없는 준비된 파일을 추가하세요: 콘텐츠?

    답을 하나 선택하세요.

  5. 질문 5/6

    초안이 게시되었습니다. 비공개로 진행하시겠습니까?

    답을 하나 선택하세요.

  6. 질문 6/6
    필수

    어떤 증거가 필요합니까?

    해당하는 답을 모두 선택하세요.

6개 중 0개 정답

수업을 완료하려면 필수 질문에 올바르게 답하세요.

이 브라우저에서 확인했습니다.

연습

동일한 상위 항목, 변경된 개체 ID, 정확하게 수정된 제목/메시지 및 깨끗한 상태를 증명합니다. 추가로 준비된 파일이 별도의 재생에서 작곡가 수정 콘텐츠를 어떻게 변경하는지 예측합니다.

귀하의 확인: 사이트에서 귀하의 컴퓨터를 볼 수 없습니다.

수업을 완료하려면 필수 질문에 올바르게 답하고 실제 연습을 확인하세요.

요약

  • 수정하면 대체 항목이 생성됩니다.
  • 색인은 수정된 내용을 제어합니다.
  • 메시지 전용은 별도의 범위입니다.

용어집 소개

수정하십시오 - تعديل الإيداع القير; 다시 말하다 — إعادة صيات; 대체 커밋 — إيداع بديل.

비디오 대본

영상의 나레이션, 큐별로.

성적표 표시
  1. 정확한 체크포인트부터 시작하세요.
  2. 지점 이름, 색인 그리고 작업 버전.
  3. 분리된 코스 사본만 준비하십시오.
  4. 비공개 초안을 보호하세요 교체하기 전에.
  5. 의도한 전체 수정 사항을 저장합니다.
  6. 메시지뿐만 아니라 색인도 검토하세요.
  7. 수정은 실제 마지막 커밋을 대체합니다.
  8. 수정된 주제를 명시적으로 작성하세요.
  9. 교체 항목은 한 번만 제출하세요.
  10. 같은 부모가 같은 정체성을 의미하는 것은 아닙니다.
  11. 메시지 전용 편집에는 별도의 범위가 있습니다.
  12. 수정은 무엇을 창조하는가?
  13. Git 객체는 변경할 수 없습니다. 대체품은 새 ID를 얻습니다.
  14. 무엇을 검토해야 합니까?
  15. 작성자 수정은 색인을 사용합니다. 마지막 커밋 컨텍스트.
  16. 수정된 C'의 부모?
  17. 교체가 차지합니다 같은 혈통의 지위.
  18. 관련 없는 스테이지 추가 수정 전 파일: 내용?
  19. 현재 인덱스는 다음을 정의합니다. 교체 트리.
  20. 초안이 게시되었습니다. 비공개로 진행하시겠습니까?
  21. 게시된 ID는 다른 사람이 사용할 수 있습니다.
  22. 어떤 증거가 필요합니까?
  23. 두 교체 모두 확인 아이덴티티와 의도된 콘텐츠.
  24. 실제 결과를 확인하고, 단순한 메시지가 아닙니다.
  25. 행동하기 전에 변경된 입력을 예측하십시오.
  26. 복구하기 전에 유용한 작업을 보존하세요.
  27. 계속하기 전에 체크포인트를 증명하세요.
  28. 검증된 결과를 유지 다음 단계를 위해.