Skip to main content

GitHub Docs에서 Git 사용

명령줄에서 Git을 사용하여 변경 내용을 커밋한 다음 설명서 리포지토리에 푸시할 수 있습니다.

이 문서는 설명서 리포지토리에 토픽 분기를 만들고, 변경 내용을 커밋하고, 변경 내용을 원격 리포지토리에 다시 푸시하는 프로세스를 설명합니다.

이 문서는 사용자가 이미 설명서 리포지토리를 로컬로 복제했으며 GitHub.com 또는 코드스페이스가 아닌 로컬 컴퓨터에서 변경할 것이라고 가정합니다. 자세한 내용은 "리포지토리 복제"을(를) 참조하세요.

토픽 분기 설정 및 변경

로컬 분기를 원격과 동기화된 상태로 유지하고 병합 충돌을 방지하려면 설명서를 따라 작업할 때 다음 단계를 수행합니다.

  1. 터미널에서 현재 작업 디렉터리를 설명서 리포지토리를 복제한 위치로 변경합니다. 예시:

    cd ~/my-cloned-repos/docs
    
  2. 기본 분기(main)로 전환합니다.

    git checkout main
    
  3. 원격 리포지토리 최신 커밋을 가져옵니다.

    git pull origin main
    
  4. 토픽 분기로 전환하거나 토픽 분기를 만듭니다.

    • 새 프로젝트를 시작하려면 main에서 새 토픽 분기를 만듭니다.

      git checkout -b YOUR-TOPIC-BRANCH
      

      참고: 분기 이름의 일부로 슬래시를 사용할 수 있습니다. 예를 들어 다음과 같이 사용자 이름을 포함할 수 있습니다.

      git checkout -b my-username/new-codespace-policy
      
    • 기존 프로젝트에서 작업하려면 토픽 분기로 전환하고 main의 변경 내용을 병합합니다.

      git checkout YOUR-TOPIC-BRANCH
      git merge main
      

      병합 충돌이 발생한 경우 이 문서의 뒷부분에 있는 병합 충돌 해결 단계를 수행합니다.

  5. 원하는 텍스트 편집기를 열고 필요에 따라 파일을 편집한 다음 변경 내용을 저장합니다.

변경 내용 커밋 및 푸시

  1. 변경 내용을 커밋할 준비가 되면 터미널을 열고 git status(으)로 토픽 분기의 상태를 검사합니다. 올바른 변경 내용 집합이 표시되는지 확인합니다.

    git status
    On branch YOUR-TOPIC-BRANCH
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
            deleted:    example-deleted-file.md
            modified:   example-changed-file.md
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            example-new-file.md
    
  2. 토픽 분기에 커밋할 수 있도록 변경된 파일을 스테이징합니다.

    • 새 파일을 만들거나 기존 파일을 git add FILENAME [FILENAME...]업데이트한 경우 을(를) 사용하세요. 예시:

      git add example-new-file.md example-changed-file.md
      

      변경 내용을 커밋할 수 있는 Git의 준비 영역에 업데이트된 버전의 파일이 추가됩니다. 파일의 준비 영역에서 내리려면 git reset HEAD FILENAME을(를) 사용합니다. 예들 들어 git reset HEAD example-changed-file.md입니다.

    • 파일을 삭제한 경우 git rm FILENAME [FILENAME...]을(를) 사용합니다. 예시:

      git rm example-deleted-file.md
      
  3. 변경 내용을 커밋합니다

    git commit -m "Commit message title (max 72 characters)
    
    Optional fuller description of what changed (no character limit). 
    Note the empty line between the title and the description, 
    and the closing quotation mark at the end of the commit message."
    

    이렇게 하면 스테이징된 변경 내용이 로컬로 커밋됩니다. 이제 이 커밋과 다른 푸시되지 않은 커밋을 원격 리포지토리에 푸시할 수 있습니다.

    이 커밋을 제거하려면 git reset --soft HEAD~1을(를) 사용합니다. 이 명령을 실행한 후에는 변경 내용이 더 이상 커밋되지 않지만 변경된 파일은 계속 준비 영역에 있습니다. 추가로 변경한 다음 addcommit을(를) 다시 수행할 수 있습니다.

  4. GitHub Enterprise Cloud에서 원격 리포지토리에 변경 내용을 푸시하세요.

    • 처음으로 분기를 푸시할 때 업스트림 트래킹 분기를 추가할 수 있습니다. 이를 통해 추가 전달 인자 없이 해당 분기에서 사용할 git pullgit push을(를) 사용할 수 있습니다.

      git push --set-upstream origin YOUR-TOPIC-BRANCH
      
    • 이전에 이 분기를 푸시하고 업스트림 트래킹 분기를 설정한 경우 다음을 사용할 수 있습니다.

      git push
      

커밋에 대한 모범 사례

  • 다른 사용자가 쉽게 이해할 수 있는 커밋 메시지 작성하는 데 도움이 되므로 크고 집중되지 않은 변경 모음보다 작고 집중된 변경 모음이 포함된 커밋을 선호합니다. 새 프로젝트 또는 범주에 대한 초기 커밋은 예외입니다. 이러한 커밋은 종종 후속 작업을 위한 조직적 계획을 제공하기 위해 많은 문서의 기본 버전을 한 번에 도입하기 때문에 큰 경우가 있습니다.

  • 피드백을 통합하거나 검토를 위해 특정 사용자 또는 팀에 대한 변경 사항 집합을 처리하는 경우 통합하려는 제안을 제공한 사용자를 @mention합니다. 예시: "@octocat의 피드백 통합" 또는 "청구 구성 단계 업데이트 - 자세한 사항은 @monalisa 참조."

  • 커밋이 문제를 처리하는 경우 커밋에 문제 번호를 참조하면 커밋에 대한 링크가 문제 대화 타임라인 표시됩니다. "#1234 처리 - 업그레이드하기 전에 VM을 백업하는 단계를 추가합니다."

    참고: 일반적으로 커밋을 통해 문제를 닫지 않습니다. 문제를 닫으려면 끌어오기 요청을 열고 설명에 "#1234 닫기"를 추가합니다. 끌어오기 요청이 병합되면 연결된 문제가 닫힙니다. 자세한 내용은 "끌어오기 요청을 이슈에 연결"을(를) 참조하세요.

  • 커밋 메시지를 명확하고 상세하며 명령형으로 만듭니다. 예시: "정보 추가"가 아니라 "2FA에 대한 개념 문서를 추가합니다."

  • 하루의 작업을 마칠 때 커밋되지 않은 변경 내용을 로컬 분기에 그대로 두지 않도록 합니다. 작업이 원격 리포지토리에 백업되도록 적합한 지점에서 변경 내용을 커밋하고 푸시합니다.

  • 몇 번의 커밋을 수행한 후에만 GitHub.com까지 푸시합니다. 모든 커밋을 푸시하면 Slack의 ops 채널에 노이즈가 추가되고 불필요한 빌드가 실행됩니다.

병합 충돌 해결

파일의 동일한 부분에 서로 다른 변경 내용을 포함하는 두 분기를 병합하려고 하면 병합 충돌이 발생합니다. 워크플로에서는 main을(를) 로컬 토픽 분기로 병합할 때 충돌이 가장 자주 발생합니다.

병합 충돌은 두 가지 방법으로 처리할 수 있습니다.

파일을 편집 및 변경 내용 커밋을 통한 병합 충돌 해결

  1. 명령줄에서 병합 충돌을 포함하는 파일을 기록합니다.

  2. 해당 파일 중 첫 번째 파일을 텍스트 편집기에서 엽니다.

  3. 파일에서 병합 충돌 표식을 찾습니다.

     <<<<<<< HEAD
     Here are the changes you've made.
     =====================
     Here are the changes from the main branch.
     >>>>>>> main
    
  4. 유지할 변경 사항을 결정하고 원치 않는 변경과 병합 충돌 표식을 삭제합니다. 추가로 변경해야 하는 경우 동시에 수행할 수 있습니다. 예를 들어 이전 코드 샘플에 표시된 다섯 줄을 한 줄로 변경할 수 있습니다.

    Here are the changes you want to use.
    

    병합 충돌 파일이 여러 개인 경우 모든 충돌을 해결할 때까지 이전 단계를 반복합니다.

    참고: 병합 충돌을 해결할 때 주의를 기울여야 합니다. 경우에 따라 변경 내용을 그냥 수락할 수도 있고, main 분기의 업스트림 변경 내용을 사용할 수도 있으며, 두 변경 집합을 결합할 수도 있습니다. 최상의 해결 방법이 확실하지 않은 경우에는 인식하지 못하는 특정 이유로 변경되었을 수 있는 업스트림 변경 내용을 바꾸는 것을 주의해야 합니다.

  5. 터미널에서 방금 수정한 파일을 스테이징합니다.

    git add changed-file-1.md changed-file-2.md
    
  6. 파일을 커밋합니다.

    git commit -m "Resolves merge conflicts"
    
  7. GitHub.com에서 커밋된 변경 내용을 원격 리포지토리로 푸시합니다.

    git push
    

끌어오기 요청 만들기

GitHub에서 끌어오기 요청을 일찍 여는 것이 좋습니다. 검토할 준비가 될 때까지 끌어오기 요청을 초안으로 만듭니다. 변경 내용을 푸시할 때마다 커밋이 끌어오기 요청에 추가됩니다.

참고: GitHub.com의 모든 페이지 맨 위에 있는 끌어오기 요청을 클릭하여 생성한 끌어오기 요청에 빠르게 액세스할 수 있습니다.

자세한 내용은 "끌어오기 요청 만들기"을(를) 참조하세요.