- 버전 관리 시스템 (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 <커밋아이디> | 작업한 내용을 특정 시점으로 복구 (협업시에는 쓰지 말 것. 코드 유실 위험이 있음.) |