- 버전 관리 시스템 (Version Control System): 어떤 프로그램이 몇번 수정되었는지 관리하는 시스템.
기본적인 명령어 정리
| 명령어 | 기능 | 예시 |
|---|---|---|
| git init | 로컬 저장소에 git 저장소를 초기화 | |
| git add | 변경된 파일을 스테이지 상태로 변경 | git add doNotUse.jsp |
| git commit -m "메시지" | 파일의 변경내용을 확정 | |
| git remote add <원격저장소 이름> <저장소 주소> | 원격 저장소 추가 | git remote add upstream "wow" |
| git clone <저장소 주소> | 원격 저장소의 파일을 복제 | gir clone "https://www.doNotUserJSP.com" |
| git push <원격저장소 이름> <브랜치명> | 원격 저장소에 로컬 저장소의 변경사항을 업로드 | |
| git pull <원격저장소 이름> <브랜치명> | 원격 저장소 브랜치의 최신 내용을 로컬 저장소로 불러옴 pull = fetch + merge / push를 하기 전 늘 pull을 먼저하는 습관을 가지자. |
|
| git diff/ git difftool | 파일의 변경사항 확인 (difftool => GUI) | |
| git status | 현재 작업 중인 저장소의 상태 확인 | |
| git show | 특정 커밋 내용 확인 | |
| git stash | 최근 커밋과의 차이점을 전부 임시 저장 => conflict 발생 시 사용 | |
| git branch <브랜치명> | 브랜치 생성 | |
| git branch -d(D) <브랜치명> | 브랜치 삭제 (-d: merge 된 브랜치/ -D merge 안된 브랜치) | |
| git checkout <브랜치명> | 해당 브랜치로 이동 |
| 명칭 | 명령어 | 특징 및 사용법 | 장점 | 단점 |
|---|---|---|---|---|
| 3-way merge | git merge/ git merge --no-ff |
|
||
| fast-forward merge | git merge --ff (only) <브랜치명> |
|
|
|
| squash and merge | git merge -squash <브랜치명> |
|
||
| rebase and merge |
|
사용이유: 브랜치가 많아지지 않게 관리 할 수 있어서 UNLIKE 3-WAY MERGE | main branch에 commit 내역이 있어도 병합 가능 | conflict 가능성 존재 => 앤간하면 다른 merge들도 conflict가 뜰 수 있지 않을까? |
| 명령어 | 기능 |
|---|---|
| git retore <파일명> | 커밋하지 않은 사항들을 마지막 상태로 돌림 |
| git revert <커밋아이디> | 커밋하지 않은 사항들을 마지막 상태로 돌리고 커밋함 (기록이 남음) |
| git reset -hard/-soft/-mixed <커밋아이디> | 작업한 내용을 특정 시점으로 복구 (협업시에는 쓰지 말 것. 코드 유실 위험이 있음.) |