Git 기초 습득하기 1
Git을 활용하기위해 기초적인 부분을 습득합니다.
Git은 버전 관리 시스템으로, 소프트웨어 개발에서 코드의 변경 사항을 관리하고 추적하는데 필수적인 도구입니다. 이 글에서는 Git의 기본 개념과 명령어를 알아보겠습니다. 이번 게시물 학습내용입니다.
- 깃 설치와 기본설정을 다룹니다.
- 깃 작업의 흐름을 파악합니다.
- 작업디렉토리 설정방법을 파악합니다.
- 작업디렉토리에서 관리영역으로 보내는 방법을 파악합니다.
- 관리영역에서 저장소로 보내 기록하는 방법(commit)을 파악합니다.
- 커밋(commit)을 취소하거나 이동하는 방법을 파악합니다.
깃 설치 및 기본설정
깃 설치
Git 에서 운영체제에 맞게 설치합니다.Git
이 처음이라면 좀 더 편리한GUI
보다는터미널
로 구성된 프로그램을 설치하여 명령어를 숙지하는것을 추천합니다. 이 글은 명령어 기반으로 Git의 기초적인 부분을 학습합니다.- 깃 기본설정
- 사용자명 설정 : 깃 저장소에서 사용할 사용자 정보 중 사용자명을 설정합니다.
1
$ git config --global user.name "사용자명(닉네임)"
- 사용자메일 설정 : 깃 저장소에서 사용할 사용자 정보 중 메일 주소를 설정합니다.
1
$ git config --global user.email "사용자메일"
- 깃 세팅 확인 : 앞에 설정값이 제대로 들어갔는지 확인합니다.
1
$ git config --list
- 사용자명 설정 : 깃 저장소에서 사용할 사용자 정보 중 사용자명을 설정합니다.
- 운영체제마다 달라지는 줄바꿈 호환 설정
- 윈도우 작업자
1
$ git config --global core.autocrlf true
- 맥 or 리눅스 작업자
1
$ git config --global core.autocrlf input
- 윈도우 작업자
깃 작업의 흐름
Git
은 내부에 가상의 관리 영역을 만들어 파일의 상태를 구분하고 버전을 관리합니다. Git의 작업의 흐름은 다음과 같습니다.
작업디렉토리(Working Directory)
→ 관리영역(Staging Area)
→ 저장소(Repository)
- 작업디렉토리 : 개발자가 실제로 작업하는 프로젝트 폴더
- 관리영역 : 수정이력을 기록할 파일을 대기시키는 장소
- 저장소 :
관리영역(Staging Area)
에서 대기중이던 파일들의 수정이력이 최종적으로 기록되는곳
깃 사용자는 작업디렉토리
에서 감지된 신규문서나 수정문서를 관리영역
으로 이동하고,
관리영역
으로 이동한 문서는 커밋(commit)이라는 작업을 거쳐 최종적으로 저장소
에 기록됩니다.
간략하게 정리하면 다음과 같습니다.
작업디렉토리
를 설정한다.- 작업물을
작업디렉토리
→관리영역
으로 보낸다. 관리영역
으로 이동한 작업물을 →저장소(Repository)
에 기록한다. (커밋하기)
하나씩 순서대로 살펴보겠습니다.
1. 작업디렉토리 설정 (로컬에서 깃 저장소 만들기)
- 깃 저장소 생성 : 프로젝트 루트디렉토리에서 깃 저장소를 생성 합니다.
1
$ git init
실행후 프로젝트 폴더에
.git
폴더가 숨김상태로 생성되어있습니다. 아래 리눅스 명령어로 숨김폴더를 확인할 수 있습니다.1
$ ls -al
ls
는 현재폴더와 파일을 리스트하고,-al
은 숨김폴더와 파일까지 리스트합니다.
2. 작업디렉토리에서 관리영역으로 보내기
- 프로젝트 상태 : 깃 저장소로 선언된 프로젝트 내에 신규로 생성되거나 수정된 문서를 확인합니다.
1
$ git status
해당 명령어를 입력하면
작업디렉토리
에서 감지된 문서 상태를 다음과 같이 회신합니다.- untracked file : 새로 생성된 파일로 추적이 되고 있지 않은 상태
- unmodified file : 추적 중인 파일이지만, 아직 수정 사항이 감지되지않은 상태
- modified file : 추적 중인 파일이며, 현재 수정 사항이 감지된 상태
- 요약된 깃 프로젝트 상태를 확인하려면 아래와 같은 옵션을 부여합니다.
1
$ git status -s
- 작업디렉토리에서 관리영역으로 보내기
1
$ git add 파일.확장자
파일.확장자
대신.
을 입력하면 현재작업디렉토리
에 있는 신규로 생성되거나 수정된 모든 문서를관리영역
으로 보냅니다.1
$ git add .
- 관리영역(Staging Area) 초기화 : 관리영역으로 파일을 보냈는데 보내기 전상태로 되돌리고싶다면 아래 명령어를 통해 초기화합니다.
1
$ git reset 파일.확장자
3. 관리영역 에서 저장소로 보내 기록하기 (커밋하기)
- 커밋(commit) :
관리영역(Staging Area)
에 대기 중인 문서를저장소(Repository)
로 보내 기록합니다.1
$ git commit
해당 명령어를 실행하면 저장소에 기록(커밋메세지)을 남기기위해 vim모드로 전환됩니다.
shift+i
를 입력해 하단에 INSERT모드로 변경하여 커밋메세지를 입력합니다.- 커밋메세지를 입력한뒤
ESC
키로 INSERT모드를 해제합니다. shift+;
를 입력한뒤wq
를 입력하고enter
키로 종료합니다. 여기서w
는 저장,q
는 종료 입니다.
- 커밋시
-m
옵션을 부여해서 vim모드로 전환하지않고 커밋메세지를 입력할 수 있습니다.1
$ git commit -m "커밋메세지"
- 또한, 커밋시
-am
옵션을 부여해서작업디렉토리
파일을관리영역
에 거치지 않고 바로 커밋메세지를 부여할 수 있습니다. 단, 신규파일이 아닌 수정된 파일만 가능합니다.1
$ git commit -am "커밋메세지"
커밋메세지를 작성할때 아래와 같은 카테고리를 정하면 좀 더 규칙적으로 기록할 수 있습니다.
카테고리 INITIAL 첫 생성 ADD 신규 파일 추가 UPDATE 변경사항 발생 REFACTOR 코드 리팩토링 FIX 오류로 인한 수정 REMOVE 파일 제거 STYLE 디자인 관련 변경 - 커밋 확인 : 로그를 통해 커밋이 정상적으로 됐는지 확인할 수 있습니다.
1
$ git log
- 로그 옵션을 통해 커밋의 변경사항(patch)까지 함께 출력할 수 있습니다.
1
$ git log -p
- 또한, 로그를 최근 커밋된 순서로 N번째 만큼 출력할 수 있습니다.
1
$ git log -숫자
- 각 커밋을 한 줄 씩 요약해서 출력할 수도 있습니다.
1
$ git log -oneline
HEAD
가 이동해온 이력을 확인할 수 있습니다.1
$ git reflog
커밋 되돌리기와 이동하기
- 커밋 되돌리기 : 커밋을 했는데 커밋전으로 되돌리고싶은 경우 아래 명령어를 활용합니다.
- git revert : 특정 커밋을 전단계로 되돌리고, 취소사실을 기록합니다. 커밋해시는
git log --oneline
을 통해 취소하고싶은 커밋해시 앞자리 7자리를 입력합니다.1
$ git revert <되돌리고싶은 커밋해시>
- git reset : 특정 커밋으로 되돌아가고, 취소사실을 기록하지 않습니다.
git reset 옵션
은 아래와같이 3가지가 있습니다. 옵션 미선택시--mixed
가 자동으로 선택됩니다.--hard
: 현재 작업물을 전부 제거하고 입력한 커밋해시의 작업상태로 돌아갑니다.--mixed
: 현재 작업물을 보존하고 입력한 커밋해시로 돌아갑니다.--soft
: 현재 작업물을관리영역
에 보낸상태로 입력한 커밋해시로 돌아갑니다.1
$ git reset <되돌아가고싶은 커밋해시> --옵션
revert
와reset
의 커밋해시가 다르다는것을 파악해야 합니다.
revert
는 취소하고싶은 커밋해시를 선택해야하고,
reset
은 되돌아가고싶은 커밋해시를 선택해야 합니다.
reset
의--hard
옵션은 현재 작업물을 전부 제거합니다. - git revert : 특정 커밋을 전단계로 되돌리고, 취소사실을 기록합니다. 커밋해시는
- 커밋 이동하기 :
checkout
명령어를 사용하여 특정 커밋[버전]으로 이동할 수 있습니다.1
$ git checkout 커밋해시