개요

버전관리 시스템 git의 개념과 사용 명령어

 

 


Git

프로젝트의 히스토리 관리를 위하여 사용하는 분산형 버전 관리 시스템

* 버전 관리 : 파일의 변화를 기록하는 것

* VCS : Version Control System / 버전 관리 시스템

* 버전 관리 시스템 : 프로젝트의 특정 시점의 변경사항을 저장하여 형상 관리에 용이하게 설계된 시스템

 

로컬 : 내 컴퓨터에서만 버전 관리

중앙집중형 : 서버에서만 버전 관리

분산형 : 내 컴퓨터 + 서버에서 버전 관리

 

 

Git의 차이점

대부분의 VCS는 파일의 변화를 시간 순으로 관리하는 반면, Git은 데이터를 스냅샷(snapshot)*의 연속으로 취급한다.

Git은 파일이 달라지지 않았으면 성능을 위해서 파일을 새로 저장하지 않고, 이전 상태의 파일에 대한 링크(link)*만 저장한다.

* 스냅샷 : 특정 시점에 스토리지의 파일 시스템을 포착해 보관하는 기술

* 링크 : 실제 데이터에 접근하기 위한 주소값

 

 

Git의 상태

- Committed : 안전하게 저장된 상태

- Modified : 수정이 일어난 상태

- Staged : 커밋하겠다고 한 상태

 

 


Git 명령어

로컬 명령어

- 내 컴퓨터 (로컬)에서 이루어지는 git 명령어

 

Git 명령어 학습 사이트 : https://learngitbranching.js.org/?locale=ko

 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org

 

1) checkout

- 특정 Commit을 불러오는 명령어. (특정 버전으로 이동)

git checkout [branch 이름]

 

1) checkout -b

- 브랜치를 만들고 이동

git checkout -b [branch 이름]

 

2) commit

- HEAD로 선택된 branch의 변경된 내용을 저장하는 명령어.

git commit

 

3) branch

- branch(특정 Commit에 대한 참조)를 생성하는 명령어

git branch [branch 이름] [이동할 위치] (생략되면 HEAD 위치)

 

3-1) branch -f

- branch를 이동 시키는 명령어

git branch -f [이동할 저장소] [이동할 위치] (생략되면 HEAD 위치)

 

4) merge

- 서로 다른 두 개의 Commit을 합쳐서 새로운 Commit을 생성하는 명령어

git merge [병합할 Commit]

 

5) rebase

- Commit을 복사하여 다른 Commit으로 복사하여 붙여넣는 명령어.

git rebase [재정의할 위치] [재정의할 대상] (생략하면 HEAD 위치)

 

5-1) rebase -i

- 이력의 순서를 변경한다.

git rebase -i [재정의할 위치] [재정의할 기준] (생략하면 HEAD 위치)

 

6) cherry-pick

- HEAD 위치에서 특정 Commit용만을 선택(cherry-pick)하여 복사 붙여넣기하는 명령어

git cherry-pick [저장할 내용] [저장할 내용] ...

 

7) reset

- HEAD 위치의 branch를 이전 이력으로 되돌리는 명령어 (저장 이력이 사라짐)

git reset [이동시킬 위치]

 

8) revert

- HEAD 위치에서 특정 Commit의 추가/삭제된 내용을 되돌리는 명령어 (저장 이력이 남음)

- git revert [되돌릴 Commit]

 

9) tag

- 특정 Commit에 내용을 남김 (보통 버전을 남기는데 사용한다)

git tag [tag 내용] [tag를 표시할 Commit]

 

10) 상대 참조

1) HEAD(*) : 현재 작업중인 버전

2) ^ : 특정 Commit의 부모 (^n : n번째 부모)

3) ~n : 특정 Commit으로부터 n만큼 떨어진 부모 (~ : 1만큼)

* Tip : ~^2~ 와 같이 사용할 수 있다.

 

 

원격 명령어

- 로컬의 내용을 리모트(서버)와 동기화 시키는 명령어

 

1) git clone

- 원격 저장소를 복제하는 것

 

2) git fetch

- 원격 저장소의 내용을 로컬로 가져 오는 것

- 기본적으로 모든 branch를 대상으로 하나, 선택 가능

(1) 로컬에 없는 커밋을 다운로드

(2) 원격 branch를 업데이트 

 

3) git pull

git fetch + git merge

 

3) git pull --rebase

- 엇갈린 히스토리를 관리하는 경우

 

4) git push

로컬 저장소의 내용을 원격으로 보내는 것

(1) 원격에 없는 내용(Commit)을 업로드

(2) 원격 branch를 업데이트

 

5) main branch가 잠겨있는 경우

 

6) 원격 추적하기

git checkout -b [생성할 로컬 브랜치] [추적할 원격]

git branch -u [추적할 원격] [로컬 브랜치]

 

- git fetch <remote> <place>

- git push <remote> <place>

- <source : destnation>

728x90

'VCS > Git' 카테고리의 다른 글

GitHub (+ GitHub Desktop)  (0) 2022.04.24
Git GUI  (0) 2022.04.20
Git Bash  (0) 2022.04.19

+ Recent posts