Github 기초 자료 정리

  • Github 사이트 링크 : https://github.com/

· 용어설명


  • Git : 버전관리도구

    통상적으로 버전관리는 파일명을 이용함 (ex:보고서_최종.hwp 보고서_최종_최종.hwp 보고서_진짜최종.hwp ... )
    → 이를 파일명과 버전, 코멘트 각각 분리하여 관리할 수 있게 하는 도구
    ★ 파일 1개로도 버전관리가 가능하게함
    
  • Github : Git + ( 원격 저장소 & Git Community service )

  • Repo ( Repository ) : Git 저장소. 내 컴퓨터 내 저장소는 local repo, Github 등 외부 저장소는 remote(원격) repo라고 부른다.

  • Add ( Staging ) : 새로운 버전으로 올릴 파일들을 stage에 올린다. stage는 실제 버전으로 올리기 전 임시 보관소와 비슷한 개념이다.

  • Commit : stage의 파일로 버전을 추가하는 것을 말한다.

  • Branch : 기능별 혹은 담당자별로 분리된 작업공간. 기능/담당자의 작업 History를 한 눈에 볼 수 있다.

· 이용 프로그램


  • Git Bash : CUI(character user interface)
  • Source Tree : GUI(graphic user interface)

※ 한시적 접속보안토큰 ( Personal access tokens ) Token을 발급하여 Git 프로그램 로그인에 사용하는 방식

  • 링크 : https://github.com/settings/tokens
  • 발급받기
    1. 발급받을 Personal token의 access 범위 설정
      ex) { repo, workflow, admin:org, admin:public_key, gist, user, delete_repo }
    2. 서비스에 로그인 ( 아래 경로예시는 sourcetree )
      1. 도구 > 옵션 > 인증
      2. 인증계정설정 { 호스팅 서비스 : github, 인증 : Basic }
      3. 로그인 { ID : github ID, PW : 발급받은 Token }

· 명령어


요약 명령어 내용
저장소 생성 git init 현재 위치에 Git 저장소를 생성한다.
저장소 복제 git clone REPO_URL Remote repository의 내용을 local repository로 복제한다.
Add git add FILE_NAME
git add . : 변경된 파일 모두 추가
-f ( force ) : 기존 중복 디렉토리를 무시하고 추가한다.
-p( partial ) : 수정한 부분에 대해서만 추가한다.
-v ( verbose ) : 자세한 실행 과정과 결과를 출력한다.
Commit git commit -m "COMMIT_MESSAGE" : 메세지를 추가한다. 작업일/작업자/작업내용 등을 요약하여 기재한다.
작업 내용 확인 git status 현재 작업 상태를 출력한다.
수정한 코드
공유하기
git push OPTION LOCAL_REPO REMOTE_REPO 수정한 코드를 원격 저장소에 공유한다.
--all : 모든 로컬 브랜치의 변경 사항을 원격 저장소에 등록한다.
--tags : 모든 로컬 태크의 변경 사항을 원격 저장소에 등록한다.
수정된 코드
가져오기
git pull
git pull REPO BRANCH_NAME
 
브랜치 생성 git branch BRANCH_NAME -a : 로컬과 원격 repo의 브랜치 목록을 출력한다.
-r : 원격 repo의 브랜치 목록을 출력한다.
-d : 브랜치를 삭제한다.
-m BASE_NAME NEW_NAME : 브랜치 이름을 변경한다.
사용할 브랜치 지정 git checkout BRANCH_NAME -b NEW_BRANCH_NAME : 브랜치 생성과 checkout을 함께 실행한다.
-b NEW_BRANCH_NAME BASE_BRANCH_NAME
: base branch에서 파생된 new branch를 생성한다.
-f : 강제로 명령을 수행한다.
코드 병합 git merge COMMIT_NAME 커밋을 현재 브랜치에 통합한다.
-m : 메세지를 추가한다.
커밋이력 최신화 git fetch 최신 커밋 이력을 로컬로 가져온다.
  git reset --soft : commit된 파일을 staging area로 돌려놓는다.
--mixed : commit된 파일을 add하기 전 상태로 돌려놓는다.
--hard : commit된 파일 중 tracked 내용을 삭제한다. ( 공동작업이 이루어지는 repo에서는 잘 사용하지 않는다.)
image-20221017205324435
  git revert 이전 commit 내역을 남겨둔 채 해당 commit의 새로운 버전의 commit을 생성한다.
이전 커밋에 영향을 주지않고도 이전 커밋의 내용을 변경/삭제할 수 있다.

· 사용하기


  • 최신 commit 이력을 가져와 local repo 업데이트하기

    git fetch
    git reset --hard origin/main
    git pull origin main
    

· 협업 시나리오


협업 시나리오

Github 사용에 대한 workflow를 정해 협업 시 발생할 수 있는 충돌( conflict )을 해결한다. 협업 시나리오는 회사마다 룰이 다를 수 있으나 예제에서는 그 중 일반적인 경우를 다룬다.

1) Issue 할당 : 작업자를 결정하고 업무를 분배한다.

2) 작업 : 각자 Branch에서 작업한다.

3) Push : 각자 작업을 프로젝트에 합칠 수 있게 공유한다.

4) Merge : 작업한 내용을 최종 프로젝트에 반영한다.

또는 PR 후 머지 : 작업한 내용을 리뷰하고 최종 프로젝트에 반영한다.

📚관련자료 : https://docs.github.com/en/get-started/quickstart/github-flow

1. ISSUE 할당

Issue란 프로젝트에서 해결해야하는 문제 ( 버그, 개선제안 등 ) 이다. 일반적으로 아래와 같은 방식으로 관리한다.

  1. 발생한 문제를 Issue로 등록한다. Issue를 등록할 때에는 아래와 같은 정보를 입력한다.
    • Title, Content : 제목과 내용을 입력한다.
    • Assignees : 담당자를 할당할 수 있다.
    • Label : 이슈를 구분할 수 있는 Label을 추가할 수 있다.
    • Projects : Project Board에 등록할지를 선택할 수 있다.
    • Milestone : Milestone을 지정할 수 있다.
  2. Issue에 담당자가 할당되어있다면 해당 담당자가 처리하지만, 만약 담당자가 할당되어있지 않다면 처리할 사람이 나서서 할당을 받는다.
  3. 작업한다. commit 시 메세지에 이슈 번호 #1 를 추가하여 이슈와 연결할 수 있다.
  4. 이슈가 해결되었거나, 해결이 필요없어진 이슈일 경우 Close로 닫아준다.

Github 외 이슈관리 도구로는 Jira, Trello, YouTrack 등이 있다.

2. Branch 만들기 & 작업하기

기능별로 Branch를 분리하는 경우 ISSUE 작업 전 브랜치를 새로 만든다. 브랜치명은 해당 브랜치의 내용을 요약하여 표시한다.

예시에서는 카테고리/이슈번호_기능내용과 같이 작성했다. 카테고리에는 feature, error등 작업의 목적을 나타낸다.

3. Commit & Push

작업한 내용을 Commit(버전 추가)하고 Push하여 remote repo에 공유한다.

4. Merge

Branch에서 분리하여 작업한 내용을 프로젝트에 반영하는 과정이다.

기능별로 Branch를 사용할 경우 Merge가 종료되면 해당 Branch는 삭제한다.

  • Merge conflict : 병합과정 중 다른 Branch의 Merge 내용과의 충돌을 말한다.

    1. 충돌이 발생하면 아래와 같이 충돌 내용을 표시한 버전을 확인할 수 있다.

      <<<< CHECKOUT_BRANCH_NAME ~ ======= : 현재 Checkout 되어있는 Branch의 코드내용

      ======= ~ >>>> COMMIT_BRANCH_NAME : Merge를 시도했던 Commit 버전의 코드내용

    2. 위 충돌 내용이 표시된 버전에서 <<< === >>>내용들을 수정하고 다시 Commit & Merge한다.

4-1. PR ( Pull Request )

작업 내역을 바로 최종 프로젝트에 Merge하지않고 Branch를 Merge 해달라는 요청을 보내는 과정이다.

  1. main 보다 commit 버전이 최신일 경우 Pull request 버튼이 활성화 된다.

  2. 제목과 내용을 기재하고 Create pull request를 생성한다.

  3. 코드리뷰 후 팀원들의 의견에 따라 수정하거나, Merge pull request 한다.

    수정사항이 있을 경우 수정 후 commit & push하면 이미 작성한 Pull request에 이력이 추가된다.

출처

  • Sparta codingclub Git 강의
  • https://terry-some.tistory.com/93
  • https://terms.naver.com/

태그:

카테고리:

업데이트: