[Github] 기초
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
- 발급받기
- 발급받을 Personal token의 access 범위 설정
ex) { repo, workflow, admin:org, admin:public_key, gist, user, delete_repo } - 서비스에 로그인 ( 아래 경로예시는 sourcetree )
- 도구 > 옵션 > 인증
- 인증계정설정 { 호스팅 서비스 : github, 인증 : Basic }
- 로그인 { ID : github ID, PW : 발급받은 Token }
- 발급받을 Personal token의 access 범위 설정
· 명령어
요약 | 명령어 | 내용 |
---|---|---|
저장소 생성 | 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에서는 잘 사용하지 않는다.) |
|
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란 프로젝트에서 해결해야하는 문제 ( 버그, 개선제안 등 ) 이다. 일반적으로 아래와 같은 방식으로 관리한다.
- 발생한 문제를 Issue로 등록한다.
Issue를 등록할 때에는 아래와 같은 정보를 입력한다.
- Title, Content : 제목과 내용을 입력한다.
- Assignees : 담당자를 할당할 수 있다.
- Label : 이슈를 구분할 수 있는 Label을 추가할 수 있다.
- Projects : Project Board에 등록할지를 선택할 수 있다.
- Milestone : Milestone을 지정할 수 있다.
- Issue에 담당자가 할당되어있다면 해당 담당자가 처리하지만, 만약 담당자가 할당되어있지 않다면 처리할 사람이 나서서 할당을 받는다.
- 작업한다.
commit 시 메세지에 이슈 번호
#1
를 추가하여 이슈와 연결할 수 있다. - 이슈가 해결되었거나, 해결이 필요없어진 이슈일 경우 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 내용과의 충돌을 말한다.
-
충돌이 발생하면 아래와 같이 충돌 내용을 표시한 버전을 확인할 수 있다.
<<<< CHECKOUT_BRANCH_NAME ~ =======
: 현재 Checkout 되어있는 Branch의 코드내용======= ~ >>>> COMMIT_BRANCH_NAME
: Merge를 시도했던 Commit 버전의 코드내용 -
위 충돌 내용이 표시된 버전에서
<<< === >>>
내용들을 수정하고 다시 Commit & Merge한다.
-
4-1. PR ( Pull Request )
작업 내역을 바로 최종 프로젝트에 Merge하지않고 Branch를 Merge 해달라는 요청을 보내는 과정이다.
-
main 보다 commit 버전이 최신일 경우 Pull request 버튼이 활성화 된다.
-
제목과 내용을 기재하고 Create pull request를 생성한다.
-
코드리뷰 후 팀원들의 의견에 따라 수정하거나, Merge pull request 한다.
수정사항이 있을 경우 수정 후 commit & push하면 이미 작성한 Pull request에 이력이 추가된다.
출처
- Sparta codingclub Git 강의
- https://terry-some.tistory.com/93
- https://terms.naver.com/