개요
버전관리 시스템 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
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>
'VCS > Git' 카테고리의 다른 글
GitHub (+ GitHub Desktop) (0) | 2022.04.24 |
---|---|
Git GUI (0) | 2022.04.20 |
Git Bash (0) | 2022.04.19 |