728x90
반응형
Git이란?
- 여러 사람이 함께 개발을 할 때, 수정된 내역을 공유하고 버전을 관리하며 개발의 효율성을 높이기 위한 도구!
- 즉, 소프트웨어 버전 관리 시스템(VCS, Version Control System)이라고 할 수 있음
- 단, 작은 단위의 개발보다는 매우 크고 복잡한 프로젝트를 개발할 때 더 유용함
Git server와 Git Client
Git server (클라이언트에게 코드를 받아 모아놓는 곳)
- Github.com
- Gitlab
- Git Bucket
- 등등 다양한 서비스가 있음
Git client (개인/지역 컴퓨터의 로컬 개발환경)
- git command line Interface (CLI): 명령어를 입력해서 git을 이용할 수 있도록 해주는 rjt
- VSC Git: VSC 내에 내장되어있는 Git
Git Server와 client의 상호작용 단계
- 내 컴퓨터에서 코드 및 문서 작성 → Github.com에 올라감 → 다른 컴퓨터에 있는 Git Client에 동기화 됨
- 항상 같은 상태를 유지하게 해줌
- 협업에 용이함
필수 용어 정리
- Repository (원격저장소): github 상에서 우리의 코드 및 프로그램을 담는 프로젝트 저장소!
- clone: github에 있는 repository의 내용을 내 컴퓨터의 로컬 환경(로컬저장소)로 복제하는 것
- commit: git을 통해 로컬 저장소에서의 작업 변경 내역을 저장하는 것
- Commit history를 통해서 지금까지 commit 내역을 확인할 수도 있음
- staged changes: 버전을 분리하여 커밋하기 위한 장바구니 같은 개념 (작업 디렉토리에서 commit할 파일들만 add하여 stage에 담아놓음)
- push: commit해온 나의 로컬 저장소에서의 작업 변경내역을 원격저장소 repository에 반영할 수 있도록 업로드하는 것
- pull: 원격저장소에 있는 내용들을 나의 로컬 저장소로 내려받는 것 (pull == fetch + merge)
- fetch: 원격 저장소에 있는 내용들을 다운로드 하는 것
- merge: 다운로드 받은 내용들을 합치는 것
- checkout: 저장소의 head를 바꾸어, commit 내역을 토대로 버전을 되돌리는 등의 작업을 수행하는 명령어
- 마지막으로 commit한 버전은 master가 가리키고 있음
- master 버튼 위에 커서를 올려 우클릭 → (Master) Checkout Branch 선택
- 반드시 master 버튼 위에서 수행해야 함!!! 반! 드! 시!
- Issue: 저장소에 속해있는 게시판 — 프로젝트 진행 과정 중 발생하는 이슈들을 올리고, 담당자나 카테고리 및 작업 대상 코드를 지정하여 작업을 요청하는 글을 올릴 수 있음! (링크)
- Wiki: 프로젝트와 관련된 매뉴얼이나 다양한 지식들을 구조화하여 업로드하는 곳 (링크)
- Insight: 이 프로젝트가 어떤 상태인지 확인할 수 있는 곳
git config를 이용한 최초 설정
- git config는 commit 시에 누가 어떤 기록을 했는지 파악할 수 있도록, 작업자의 기록을 남기기 위한 세팅
- gif config에 global 옵션값을 더하여 유저 이름과 이메일을 등록
- Repository에 따라 최초 한 번만 설정하면 됨 😉
git config -- global user.name username
git config -- global user.email username@gmail.com
협업을 위한 내용정리
- branch: 하나의 프로젝트 내에서 다양한 실험적인 작업들을 할 수 있도록 하는 독립적인 작업 영역
- master branch에 exp branch를 합치는 것 — 실험이 종료됨
- exp branch에 master branch를 합치는 것 — 실험을 토대로 업데이트
- 위 둘의 의미는 다르지만, 결과물은 반드시 동일해야 함
- 한 번에 여러 작업 혹은 확신에 들지 않는 작업을 할 때 주로 사용하는 것을 권장함
- branch 이름은 주로 ‘feature/기능명’ 과 같이 짓는다고 함
- PULL and PUSH — 항상 원격저장소 내용을 받아온 후에 (PULL),내가 작성한 부분을 원격 저장소에 업로드해야 함에 유의!
- Conflict: 같은 내용이 서로 다른 로컬 저장소에서 수정되어 충돌하는 것!
- 예) A가 3번째 코드 줄을 수정 후 commit & push
- B가 3번째 코드를 수정 후 commit & push → [Fail!] A가 이미 push함으로써 원격저장소 코드가 달라졌기 때문 (Conflict)
- B가 pull 을 함으로써 원격 저장소의 코드를 다시 받아옴
- B가 사용하는 vscode 에서 충돌이 난 부분을 알려줌
- B가 충돌이 난 부분을 수정하여 다시 commit & push
- 수정방안 1) 원격 저장소의 코드를 수용 — 남이 만든 코드를 반영
- 수정방안 2) 지역 저장소의 코드를 반영 — 내가 만든 코드를 반영
- 수정방안 3) 두 가지를 모두 반영하는 경우 — 두 가지를 다 고려하여 수정
- Pull & Request: 브랜치를 나누어 개발한 것을 master branch에 merge하기 위해 관리자에게 검토 요청을 보내기 위함 — 간단한 댓글 기능으로 리뷰도 가능함
- PR을 하는 과정에서도 conflict가 발생할 수 있음
- 이 때 conflict를 해결하고, master에 merge하는 것이 중요함
- 모든 과정을 단번에 이해하려고 하지 말고, 필요할 때 다시 찾아보면서 이해하기
본 내용은 부스트코스의 ‘Github으로 따라하는 버전 관리’ 강의 내용을 토대로 작성되었습니다
728x90
반응형
'Dev > TOOLS 도구' 카테고리의 다른 글
[Git&GitHub] Git & GitHub 관련 개념 총정리 2탄 - 응용편 (0) | 2023.04.04 |
---|---|
[Git&GitHub] Git 마크다운 꿀팁 모음 | 마크다운 에디터 StackEdit | MarkDown 문법 | REAME 템플릿 (0) | 2022.03.17 |
[Git&GitHub] 원격저장소 생성 | 원격저장소에 커밋 올리기 | 원격저장소에서 로컬저장소에 커밋 내려받기 (0) | 2022.03.07 |
[Git&GitHub] Git 설치 | 로컬저장소 생성 | git 기본 명령어 (0) | 2022.03.07 |
[Git&GitHub] 버전 관리를 위한 시스템, Git & GitHub (0) | 2022.03.07 |