git의 기본적인 명령어들을 정리해보려고 합니다. 모든 명령어들을 정리하는 것이 아닌 많이 쓰이는 명령어들을 위주로 정리 해보았습니다.
그전에 먼저 간단하게 git이란 무엇인가? 그리고 git에서 사용하는 용어들을 정리해 보겠습니다.
git이란 무엇인가?
git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.
위키백과 위키 백과에서는 위와 같이 말하고 있다. 그 중에서 주위깊게 보아야 할 단어들은 "추적, 분산 버전 관리 시스템" 정도이다. git은 2005년 리누스 토르발스가 리눅스 커널 개발을 위해 처음 개발하였다. 많은 버전 관리 시스템(VCS : Version Control System)중에 하나인데 다른 버전 관리 시스템과 다른점은 저장소를 분산해서 관리 한다는 점이다. 즉 중앙 저장소에 문제가 생겨도 로컬저장소를 이용하여 복원이 가능하다는 것이다.
git에서 사용하는 용어들
Working tree : 현재 작업하고 있는 공간, git이 관리하고 있지만 아직 추적(track)하고 있지 않은 상태 (또는 Working Directory)
Staging area : 커밋 하기전 staged 된 파일들이 있는 공간,수정한 파일을 커밋하기 전에 표시(add)해둔 공간
Commit : 작업한 내용을 로컬 저장소에 저장하는 것을 의미합니다.
Repository : 저장소를 의미 합니다. 저장소에는 2가지가 있습니다. -Local Repository : 본인 PC에 존재하는 저장소를 의미합니다. -Remote Repository : Github, Gitlab과 같은 원격저장소를 의미합니다.
Push : 로컬저장소(Local Repository) 에서 Commit이 완료된 내용을 원격저장소에 업로드 하는 것.
Clone : 원격저장소의 내용을 통째로 다운로드 하는 것을 말합니다.
Branch : 가지 또는 분기점을 의미, 현재 상태를 복사하여 자신만의 branch를 만들수 있고 작업이 완료되면 merge를 통해 합칠 수 있다.
Checkout : 특정 시점이나 브런치로 이동하는 것을 의미
Fetch : master나 다른 branch에서 작업한 내용이 내 로컬저장소와 버전이 맞지 않을때 최신버전으로 업데이트
Merge : 다른 branch의 내용을 현재 branch로 가져와 합치는 작업
Pull : 원격저장소의 변경된 내용이 로컬저장소에 반영됩니다.(fetch + merge)
git에서 일어나는 상태변화
위 그림은 git을 사용하면서 일어나는 트랜젝션을 정리해 본 그림이다.
git 명령어
본격적으로 git 명령어 들에 대해 알아보자 모든 명령어를 나열하는 것은 아니고 주로 사용하는 명령어를 기준으로 써보고자 한다.
환경설정
git config
git config --global --list // 현재 설정 정보를 조회합니다.
git config --global user.name "사용자명" // 사용자명을 등록합니다.
git config --global user.email "이메일주소" // 사용자 이메일주소을 등록합니다.
기본명령어
git init
git init // 깃 저장소를 초기화 한다.
현재 디텍토리에서 git 저장소를 생성합니다.
git status
git status // 저장소 상태 보기
저장소의 상태를 체크 합니다. Commit이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브런치를 작업하고 있는지 등을 볼 수 있다.
git diff
git diff // 스테이징 영역과 현재 작업트리의 차이점을 보여준다.
옵션
HEAD // 저장소, 스테이징 영역, 작업트리의 차이점을 모두 볼수 있다.
--cached // 스테이징 영역과 저장소의 차이점을 볼 수 있다.
--stat // 변경사항에 대한 통계를 볼 수 있다.
git add
git add <파일이름> // 파일단위로 선택
git add . // 모든 파일 추가
또는
git add *
옵션
-i // 대화형모드 실행, 일부분만 선택하여 스테이징 가능
-p // 대화형 모드 없이 바로 패치모드 사용
단일 파일 또는 변경된 모든 파일을 스테이징 한다.
git commit
git commit
git commit -m "커밋메세지"
git commit -a // 스테이지에 올리는 것과 커밋을 동시에 진행
git revert
git revert <커밋아이디>
기존 커밋에서 변경한 내용을 취소해서 새로운 커밋을 만듭니다.
git reset
git reset --<커밋아이디> // 커밋 취소
git reset --hard <커밋아이디> // 해당 위치로 되돌림
git reset --hard HEAD // 마지막 커밋 상태로 되돌림
git log
git log
옵션
-3 // 출력할 커밋로그의 갯수를 지정 할 수 있습니다.
--oneline // 한 줄로 간단하게 보여줍니다.
--graph // 브런치 트리를 볼 수 있습니다.
커밋로그들을 볼 수 있습니다. 여러가지 옵션들을 적절히 사용하면 자신이 원하는 로그만을 볼 수 있습니다.
Branch 명령어
branch 목록
git branch // 로컬 브런치
git branch -v // 해당 브런치의 commit ID도 볼 수 있다.
git branch -r // 리모트 브런치
git branch -a // 로컬, 리모트 포함된 모든 브런치