콘텐츠로 건너뛰기
GitTree

레슨 9 · 일상 업무

기능 브랜치를 생성하고 일회용 참조만 폐기

주요 내용을 변경하지 않고 기능/가격 카드에 워크플로 카드를 추가하세요. 일회용 브랜치의 이름을 바꾸고 해당 커밋이 이미 메인에서 도달 가능하다는 것을 증명한 후에만 삭제하십시오.

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

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

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

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

무엇을 배울 것인가

  • 지점 이름 생성과 체크아웃을 분리하세요.
  • 기본을 이동하지 않고 기능에 대한 워크플로 섹션을 커밋합니다.
  • 병합을 만들지 않고 일회용 로컬 참조의 이름을 바꾸거나 삭제합니다.
  • 기본 안전 삭제 검사와 GitTree의 보호된 삭제를 구별합니다.

시작하기 전에

8과가 끝난 곳에서 시작합니다. 메인에는 5개의 문서화된 커밋, 깨끗한 작업 트리 및 색인, CSS-02-WORKING 커밋이 있고 원격은 없습니다. 생성된 dist는 무시됩니다. 비디오는 Ubuntu 24.04에서 Git 2.52.0 및 GitTree 2.0을 사용하여 녹화되었습니다. 앱에서 브랜치가 생성되고, 이름이 바뀌고, 삭제되고 전환되었으며, 파일이 거기에 저장되고 커밋되었으며, 앱이 생성한 항목 또는 생성 전용 및 이름이 변경된 상태에 대한 별도의 복사본에 대해 터미널 검사가 실행되었습니다. macOS 또는 Windows에서는 아무것도 실행되지 않았으며 Ubuntu는 기록된 유일한 Linux 시스템입니다. GitTree의 검사된 최소값은 Git 2.39.0입니다. 로그인하면 로컬 분기가 무료 플랜으로 진행되며 호스트나 Pro/평가판이 필요하지 않습니다.

아래의 모든 분기 변형은 written steps for the isolated GitTree Features demo이며, 이 웹사이트 결제를 분기하라는 지침이 아닙니다. 작성자의 소스 브랜치는 변경되지 않습니다.

개념

브랜치는 모든 파일의 복사본이 아니라 커밋을 위한 이동 가능한 로컬 이름입니다. 이름을 만드는 것만으로는 HEAD가 이동되지 않습니다. 전환하면 HEAD가 해당 분기에 연결되고 필요에 따라 색인/작업 파일이 업데이트됩니다. 후속 커밋에서는 체크아웃된 분기만 진행됩니다. 네이티브 분기 의미, 스위치 의미.

처음에는 주요 이름이 H5입니다. H5에서 생성된 일회용 분기는 다른 커밋이 아닌 동일한 원에 두 번째 레이블을 추가합니다. 이름을 바꾸면 라벨이 변경됩니다. 이미 접근 가능한 레이블을 제거해도 기본 기록은 제거되지 않습니다. 이후 기능/가격표는 H5에서 시작하여 F1으로 진행됩니다. 메인 스테이 H5. 리모컨이 생성되거나 삭제되지 않습니다.

네이티브 git branch -d는 병합 여부를 확인합니다(일반적으로 업스트림/현재 HEAD를 기준으로 함). GitTree's inspected local deletion adapter uses -D after protecting the selected tip in its trash/journal. It is not the same refusal rule. 단지 Native -d가 그랬기 때문에 앱이 병합되지 않은 삭제를 중지할 것이라고 가정하지 마십시오. 이 과정에서 우리는 일회용 팁이 기본 before either path의 조상임을 증명하고 기능을 유지하며 원격 삭제 작업을 선택하지 않습니다.

전체 기능 파일

해당 기능에서는 index.html만 변경됩니다. 전체 HTML-03으로 교체하세요. 기존 스타일/스크립트/역사는 8과에서 남긴 그대로 유지됩니다. 주제 분기 이름은 문자 그대로이지만 섹션에는 가격이나 프로모션이 포함되어 있지 않습니다.

파일 발췌 · 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.</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>
    <section aria-labelledby="plans-title">
      <h2 id="plans-title">Choose the workflow you need</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>Local Git</h3>
          <p>Local Git workflows work without signing in.</p>
        </article>
        <article class="feature-card">
          <h3>Connected workflows</h3>
          <p>Provider integrations and Nour require Pro or an applicable trial.</p>
        </article>
      </div>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

GitTree에서

  1. 기록 문서 커밋에서 원본이 깨끗한 메인에 있는지 확인하세요. Command Palette…(Command/Ctrl+Shift+P) → Create Branch…(repo.branch.create)를 엽니다. Create a branch at HEAD이(가) 예상됩니다.
  2. Branch name = practice/rename-me을(를) 설정합니다. Uncheck Check out the new branch. Create Branch을 선택하세요. 메인이 체크아웃된 동안 동일한 커밋에서 새 참조를 기대하세요.
  3. 로컬 브랜치 목록에서 practice/rename-me를 마우스 오른쪽 버튼으로 클릭 → Rename practice/rename-me…을 클릭하세요. Rename practice/rename-me에서 지점 이름을 practice/renamed으로 설정한 다음 Rename로 설정합니다. 이전 이름은 없고 새 이름은 같은 끝에 있을 것으로 예상됩니다. 파일이 변경되지 않습니다.
  4. 터미널에서 아래의 조상조건을 증명합니다. 그런 다음 연습/이름 변경 → Delete practice/renamed…을(를) 마우스 오른쪽 버튼으로 클릭하세요. Delete practice/renamed in gittree-features?을(를) 검토하고 로컬 참조만 대상으로 지정되었는지 확인한 다음 Delete practice/renamed을(를) 검토하세요. 이름/팁이 다르면 취소하세요. 소스는 원격 복원이 아닌 사전 돌연변이 휴지통/일지 항목을 약속합니다. 런타임 입증을 호출하기 전에 실제 작업/증거를 캡처하세요.
  5. 팔레트 Create Branch… 다시 이름을 feature/pricing-cards로 지정하고 Check out the new branch을 선택된 상태로 두고 Create Branch를 선택하세요. 동일한 H5에서 체크아웃된 기능을 기대하세요. 이 확인란을 선택하면 2단계와 달리 작업이 and 스위치를 생성하게 됩니다.
  6. 파일 표시(Command/Ctrl+Shift+E), index.html에 초점을 맞추고 Enter를 누르세요. 작업 텍스트를 전체 HTML-03 및 Save(Command/Ctrl+S)로 바꿉니다. 생성된 dist를 스테이지하지 마십시오.
  7. 그래프 → 팔레트 Show Working Changes로 돌아갑니다. index.html을 검토하고 Stage File을(를) 사용하세요. 요약 feat: add workflow cards; 일반 옵션 꺼짐; Commit Changes to 1 File / Command/Ctrl+Enter를 한 번 누릅니다.
  8. 로컬 분기 목록에서 main을 마우스 오른쪽 버튼으로 클릭 → Checkout main. 워크플로 섹션과 깔끔한 ​​작업이 없는 문서 시대의 영웅을 기대하세요. 돌아가려면 기능/가격 카드 → Checkout feature/pricing-cards를 마우스 오른쪽 버튼으로 클릭하세요. 분기의 커밋된 트리가 다르기 때문에 해당 섹션이 다시 나타납니다.
  9. 더티 스위치 대화 상자가 나타나면 Cancel하고 실제 작업을 검사하십시오. 표준 스위치 포인트는 깨끗합니다. 필름과 일치하는 폐기 옵션을 선택하지 마십시오.
  10. 기능/가격표로 끝납니다. 기본에 5개의 커밋이 있고 기능에 1개의 추가 커밋이 있는지 확인하세요. 단일 선 그래프를 얻으려면 아직 not 병합하거나 삭제하세요.

명명된 참조에 대한 컨텍스트 작업은 인수가 없는 일반 팔레트 명령이 아닙니다. 최상위 팔레트 Create Branch…는 별도의 현재 HEAD 작업입니다. 실제 메뉴 라벨을 사용하세요. 기본 직접 분기 생성/전환 단축키는 고안되지 않았습니다.

터미널에서

깨끗한 기본 입력에서 기본적으로 동일합니다. 앱 성공 후 변형을 반복하지 마세요.

Command · bash
git branch practice/rename-me
git symbolic-ref --short HEAD
git branch -m practice/rename-me practice/renamed
git merge-base --is-ancestor practice/renamed main

분기/이름 바꾸기/상위 확인이 자동으로 성공했습니다. 기호 참조 인쇄:

출력
main

조상 쿼리의 종료 0은 이 일회용 팁에 이미 접근할 수 있음을 증명합니다. 0이 아닌 결과는 중지를 의미합니다. 강제 삭제를 대체하지 마십시오.

Command · bash
git branch --delete --quiet practice/renamed
git switch --quiet --create feature/pricing-cards

둘 다 조용히 성공했습니다. 전체 HTML-03을 저장한 후:

Command · bash
git add -- index.html
git commit --quiet -m "feat: add workflow cards"
git switch --quiet main

모두 조용히 고정 장치에 성공했습니다. 이 메인 스위치는 기능 참조를 이동하지 않습니다.

main이 체크아웃된 동안 의도적인 기본 거부:

Command · bash
git -c advice.forceDeleteBranch=false branch -d feature/pricing-cards

표준 오류가 관찰되었습니다. 1 종료:

출력
error: the branch 'feature/pricing-cards' is not fully merged

기능이 남아 있습니다. Do not attempt this as an app safety test: 보호된 삭제 정책이 다릅니다. 수업을 "수정"하기 위해 -d를 -D로 바꾸지 마십시오.

반품 및 검사:

Command · bash
git switch --quiet feature/pricing-cards
git symbolic-ref --short HEAD
git branch --format='%(refname:short)'
git rev-list --count main..feature/pricing-cards
git log --format=%s main..feature/pricing-cards
git diff --name-only main feature/pricing-cards
git rev-list --count main
git status --short

자동 전환 후 관찰된 출력은 다음과 같습니다.

출력
feature/pricing-cards
feature/pricing-cards
main
1
feat: add workflow cards
index.html
5

종료 0이 있는 최종 짧은 상태는 비어 있습니다. 두 일회용 이름이 모두 없습니다. 구성된 것이 없으므로 원격 출력이 존재하지 않습니다.

결과

이 강의가 끝나면 기능/가격표를 체크아웃하고 정리하고 기본 기능 외에 하나의 기능을 커밋합니다. main은 5개의 커밋 문서 체크포인트에 남아 있습니다. 워크플로 카드에는 가격이 포함되어 있지 않습니다. 일회용 가지가 없습니다. 병합, 원격, 게시된 분기 또는 공급자 작업이 없습니다.

일반적인 실수

  • 분기 레이블을 커밋으로 계산합니다.
  • 생성 전용 이동 HEAD를 가정합니다.
  • 데모 참조 대신 활성 소스 웹 분기의 이름을 바꿉니다.
  • 앱 삭제에는 기본 -d의 보호 기능이 있다고 믿습니다.
  • 그래프를 단순화하기 위해 유용한 기능을 삭제합니다.

뭔가 잘못되면

유효하지 않거나 중복된 이름은 입력된 값으로 대화 상자를 열어 두어야 합니다. 오류를 읽으십시오. 관련되지 않은 참조의 이름을 변경하여 사례 전용 모호성을 해결하지 마십시오. 작업이 스위치를 차단하는 경우 스위치를 취소하고 보존합니다. 나중에 stash/commit 수업에서는 신중한 선택을 제공합니다. 다른 작업트리에서 체크아웃된 브랜치는 단순히 삭제할 수 없습니다.

기본 병합되지 않은 거부는 보호적입니다. 앱의 돌연변이 전 스냅샷은 도달 가능성이나 팁 ID를 무시할 수 있는 권한이 아닌 다른 메커니즘입니다. 필터링된 보기에서 레이블이 일시적으로 사라졌다고 해서 실패한 변형이 성공으로 표시되어서는 안 됩니다.

이해도를 확인해보세요

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

  1. 질문 1/6

    H5에 또 다른 참조를 생성하면 얼마나 많은 히스토리가 생성됩니까?

    답을 하나 선택하세요.

  2. 질문 2/6

    일회용 참조를 삭제하기 전에 필요한 것은 무엇입니까?

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

  3. 질문 3/6
    필수

    H5의 기능/가격 카드에 HTML-03을 커밋합니다. 메인은 어디에 있나요?

    답을 하나 선택하세요.

  4. 질문 4/6
    필수

    메인에 있는 동안 새 지점을 확인하십시오.를 선택 취소하십시오. 어떤 변화가 있나요?

    답을 하나 선택하세요.

  5. 질문 5/6

    Native -d는 병합되지 않은 기능을 거부합니다. 그것은 GitTree도 거절했다는 것을 증명합니까?

    답을 하나 선택하세요.

  6. 질문 6/6
    필수

    완료된 체크포인트를 입증하는 증거는 무엇입니까?

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

6개 중 0개 정답

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

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

연습

변경되지 않은 기본 기능과 커밋 한 단계 앞선 기능을 표시합니다. 변경된 입력: 새 분기가 off인지 확인하면 명시적인 전환이 있을 때까지 HEAD가 기본 상태로 유지될 것으로 예측합니다. 완료된 체크포인트를 변경하지 않고 별도의 일회용 재생에서 테스트합니다. 기본 거부가 앱 거부를 증명하지 못하는 이유를 설명하세요.

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

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

요약

  • 브랜치 이름과 커밋은 다른 개체입니다.
  • 만들기 전용과 만들기 및 전환에는 서로 다른 HEAD 효과가 있습니다.
  • 삭제 범위 및 도달 가능성을 입증합니다. 보호된 앱 삭제와 기본 -d는 다릅니다.

용어집 소개

지점 — fr; 스위치 - تبديل; 심판 - مرجع; 도달 가능 - قابل للوصول; 업스트림 — برع متتبَّع; 작업 트리 - مجلد العمل.

비디오 대본

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

성적표 표시
  1. 기능 분기 만들기 메인을 보존하면서.
  2. 새로운 지점 이름은 다음과 같습니다. 커밋을 만들지 마세요.
  3. 일회용품을 만들어라 메인을 떠나지 않고 이름을 짓습니다.
  4. 생성 전용인지 확인하세요. 지점을 바꾸지 않았습니다.
  5. 일회용 심판의 이름을 바꾸십시오. 웹사이트의 소스 브랜치.
  6. 현재 일회용 팁을 확인하세요 이미 메인에서 접근 가능합니다.
  7. 사전 체크된 항목만 삭제 일회용 참조.
  8. GitTree의 보호된 삭제는 다음과 같습니다. 기본 안전 삭제 거부가 아닙니다.
  9. 이번에는 기능을 확인하고 확인해 보세요.
  10. 워크플로 섹션 저장 가격이나 프로모션 없이.
  11. 기능 중 하나를 검토하세요. 커밋하기 전에 파일을 변경했습니다.
  12. 기본이 아닌 기능에 커밋합니다.
  13. 체크아웃된 지점만 이 커밋으로 발전합니다.
  14. 전환하면 메인의 커밋된 트리가 선택됩니다.
  15. 기본 안전 삭제 거부 병합되지 않은 기능.
  16. 그 거부는 GitTree를 증명하지 않습니다. 동일한 삭제를 거부합니다.
  17. 기능으로 돌아가기 녹음된 파일 내용.
  18. 하나의 기능 커밋을 확인하고 인덱스 도트 H T M L만 변경되었습니다.
  19. Main에는 여전히 5개의 커밋이 있습니다. 기능이 깨끗합니다.
  20. 결제가 해제되면 새 이름 존재하지만 HEAD는 메인에 남아 있습니다.
  21. 예상치 못한 더티 스위치 취소 그리고 먼저 작품을 검사해 보세요.
  22. 보호된 지역 팁은 원격 복원을 약속합니다.
  23. 유용한 기능을 유지하고 검증하세요 일회용 이름이 사라졌습니다.
  24. 다음 강의에서는 리모콘; 여기에는 아무것도 필요하지 않았습니다.