[Git] 구조와 사용법 소개

hahaha·2021년 8월 1일
0

Git

목록 보기
1/5
post-thumbnail

1. Structure

1) Working Directory: 작업하는 공간

  1. tracked files: git이 인지하고 있는 파일
  2. untracked files: git이 인지하지 못한 파일

2) Staging Area: 저장소에 업데이트하려는 모든 변경사항을 모아두는 곳

3) Local Repository: 개인 PC에 저장되는 저장소

4) Remote Repository: 다른 개발자와 공유하는 저장소

  • github repository

2. Basic Process

1) 로컬 저장소 생성

: 중앙 원격 저장소(remote repository)를 복제하여 자신의 로컬 저장소(local repository) 생성

  1. 현재 디렉터리를 빈 Git 저장소로 만들기
$ git init
  1. 현재 작업 중인 Git 저장소에 중앙 원격 저장소 추가 (이름은 URL 대신 origin으로 사용)
$ git remote add origin [remote repository URL]	
  1. 중앙 원격 저장소(origin)의 master 브랜치 데이터를 로컬에 가져오는 작업
$ git fetch origin master

=> 원격 저장소를 복제한 로컬 저장소 생성 (위 명령을 모두 포함)

$ git clone [remote respository URL]

2) 새로운 기능 개발을 위한 브랜치 생성

: 로컬 저장소에서 새로운 브랜치를 생성한 후, 작업을 수행하고 변경 내용을 커밋한다.

  1. 새로운 브랜치 생성
$ git branch [branch name] 
  1. 브랜치 이동(HEAD 포인터 이동)
$ git checkout [branch name]

=> 브랜치 생성 후, 이동 (위 명령을 모두 포함)

$ git checkout -b [branch-name]
  • ex. develop에서 feat/PC-001로 분기된 계층적 브랜치 구조 만들기
$ git checkout develop		// develop 브랜치로 이동
$ git branch -b feat/PC-001	// feat 폴더의 PC-001 브랜치 생성 후, 이동
  • 브랜치 확인하기
$ git branch 	// 로컬 브랜치 목록
$ git branch -r // 원격 브랜치 목록
$ git branch -a // 모든 브랜치 목록

3) 작업한 파일을 커밋한 후, 해당 브랜치를 원격 저장소에 푸시

: 로컬 저장소에서 작업한 새로운 기능의 브랜치를 중앙 원격 저장소에 푸시한다.

1-a. 변경된 모든 파일을 스테이징 영역에 추가

$ git add . 

1-b. 변경된 특정 파일을 스테이징 영역에 추가

$ git add [file-name]
  1. 로컬 저장소에 변경사항 반영하기(commit) (staging -> local)
$ git commit -m "commit message"

=> 변경된 모든 내용을 로컬 저장소에 반영하기(commit) (위 명령을 모두 포함)

$ git commit -a -m "commit message"
  1. 원격 저장소에 커밋 공유하기 (local -> remote)
    (origin에 동일한 이름의 브랜치 복제)
$ git push origin feat/PC-001

+) git status, git log 를 통해 확인하는 습관 중요

4) 작업한 내용에 대한 PR(Pull Request) 요청하기

: 원격 저장소에 푸시한 작업한 브랜치를 origin에 병합(merge)을 요청하는 것

  • PR이 승인된 경우 원격 저장소에 병합
  • 병합 방식에 따라 상이 (merge, rebase, ...)

5) 로컬 저장소를 원격 저장소와 동기화 하기

: 다른 개발자에 의해 변경된 원격 저장소의 코드 베이스를 동기화 한다.

  • 새로운 작업을 시작할 때, 항상 로컬 저장소를 최신 상태로 만들어야 한다.

1. master(develop) 브랜치로 이동

$ git checkout develop

2. 원격 저장소의 변경사항 반영하기

2-1. pull 이용: 변경사항 가져온 후, 병합

$ git pull origin develop

2-2. fetch 이용: 변경사항 가져오기만, 병합은 별도 처리
- pull을 통한 자동 병합 대신, fetch 후 수동 병합 사용 권장 !

$ git fetch --all		// 원격 저장소로부터 변경사항 가져오기
$ git rebase origin/develop	// rebase 방식으로 병합하기
profile
junior backend-developer 👶💻

0개의 댓글