-
최초 설정
$ git config --global user.name 'name' $ git config --global user.email 'email'
git을 사용하기 전에 git 변경 내용 저장 시 같이 저장될 이름과 이메일 설정해야 함
작업 영역 생성(선언)
$ git init
git 작업할 폴더로 이동 후 명령어 실행 => git 작업 가능해짐
변경 내용 인덱스 영역에 저장
$ git add . # '.' : 해당 경로의 모든 변경 사항
add 뒤에 특정 파일 선택해서 저장하는 것도 가능하지만, 한번 저장할 때 모든 변경사항 저장하는 게 좋음
인덱스 영역에 있는 변경 내용 영구적으로 저장
$ git commit -m 'commit한 내용'
commit 까지 완료해야 저장된 것
현재 작업 영역 상태 확인
$ git status
어떤 파일이 수정되었고, 삭제되었는지 아직 저장되지 않은 변경 내역 출력됨
현재까지 commit 된 내역 확인
$ git log
헤더가 가리키고 있는 내역이 현재 상태, 각 내역 별로 해시값 확인 가능 (git bash 기준 뒤 노란 글씨)
적용됐던 변경 사항 되돌리기
$ git reset --soft [해시 4자리] $ git reset --mixed [해시 4자리] $ git reset --hard [해시 4자리]
소프트리셋 : commit 하기 직전, add 까지는 되어있는 상태로 되돌리기
믹스드리셋 : add 하기 전으로 되돌리되, 추가/변경된 파일은 그대로
하드리셋 : 추가/변경된 파일도 전부 되돌리기
모든 commit, reset 내역 전부 보기
$ git reflog
git log는 현재 상태 기준으로 적용된 변경 사항만 보여주지만, git reflog는 git init 이 된 이후 모든 commit/reset 내역 보여줌 => reflog 내역에 나오는 해시값으로도 리셋 가능
단, 로컬 저장소에서만 확인 가능하고 영구적으로 유지되지는 않음(기본 90일 - git 설정으로 변경 가능)
commit 로그 변경
$ git commit --amend -m '변경 내용'
"현재 헤더가 가리키고 있는" commit 로그 내용 변경할 때 사용 가능 => 헤더가 가리키지 않는 commit 로그는 변경 불가능
가장 처음 commit 된 로그 내용도 수정 가능한 건 장점
Git Branch : 독립적인 개발 라인 => 새로운 기능을 추가하거나 버그 수정 시 사용
현재 branch 목록
$ git branch
branch 생성
$ git branch '생성할 branch 이름'
branch 생성만 하는 것이기 때문에 새로 생성한 branch에서 작업하려면 이동해서 작업해야 함
branch 이동
$ git checkout '이동할 branch 이름'
branch 변경점 main에 병합(적용) => sub를 main에 병합한다면, 헤더를 main에 두고 sub 브랜치를 병합해야 함
$ git merge '병합할 branch 이름'
merge 시 기본적으로 적용
fast-forward merge => sub 브랜치가 갈라져 나온 이후에도 main 브랜치에 변경점이 없을 때 적용됨
특정 상황에만 적용
3-way merge => sub 브랜치가 갈라져 나온 이후에 main 브랜치에 새로운 변경점이 있을 때 적용됨
=> merge 시 vi 에디터 나옴. ':wq(저장 후 종료)' 명령어 입력하면 됨.
rebase
$ git rebase -i HEAD~'rebase할 로그 갯수'
위 명령어 사용 시 vi 에디터 나옴 => 선택한 로그들에 대한 작업 선택 가능
vi 에디터에서 사용 가능한 명령어 => vi 에디터 insert 모드 설정 후 수정, 수정 완료 후 ':wp' 입력
pick : 해당 commit 그대로 유지
reword : commit 메시지 수정
edit : commit 수정
squash : 이전 커밋과 합침
fixup : 이전 커밋과 합치되, 커밋 메시지는 무시
drop : commit 삭제
squash 시 남길 commit 로그 말고 전부 지우고 ':wp' 입력 (commit 메시지 변경도 가능)