[Git] 개인으로 코드 버전 관리

박도준·2021년 6월 22일
0

Git & Github

목록 보기
2/3

Git이란?

Git이란 Linux Kernel의 개발 관리를 위해 개발한 버전 관리 시스템이다.

다른 버전 관리 시스템과 달리, Git은 "분산"이라는 관리 방법을 사용하고 있다.



Git을 사용한 코드 관리 (개인)

Git Repository

Git의 local Repository는 3개의 영역으로 이루어져 있다.

  • Working Directory
  • Staging 영역
  • Repository

우선 Working Dir에서 개발 작업을 수행한 후, 변경된 파일을 commit하기에 앞서 Working Dir에서 Staging 영역으로 등록한다. 그리고 Staging 영역에 등록된 파일들을 묶어 한 번에 commit하고, Repo에 등록한다.


Git 설치

Git을 사용하기에 앞서 설치를 한다.
설치는 공식 사이트에서 할 수 있고, 사용하는 환경의 OS에 맞게 바이너리를 설치한다.

설치가 완료되었다면, Git의 버전을 확인해본다.

$ git --version


Git 초기 설정

Git에 사용자 정보를 등록한다.

$ git config --global user.name <사용자명>
$ git config --global user.email <이메일 주소>


Git Repo 작성

원하는 Repo 이름으로 디렉토리를 생성하고, 생성된 Repo로 이동하여 초기화를 한다.

$ mkdir sample-repo
$ cd sample-repo
$ git init


Git 명령어

git status로 Repo 상태 확인

앞서 생성한 Repo에 있는 README.md 파일에 간단한 문구를 넣는다.

$ echo "Hello" > README.md
$ cat README.md
Hello

지금까지는 단순히 working dir에 변경된 README.md 파일만 존재하는 상황이다.

그리고 상태를 확인해본다.

git status

추적하지 않는 파일에 README.md가 있는 것을 알 수 있다. 이는 아직 working dir에 있는 것을 뜻한다.


git add로 working dir -> staging 영역

working dir에 있는 파일을 staging 영역으로 추가한다.

$ git add 파일 이름

만약 working dir에서 모든 파일을 staging 영역에 추가하고 싶으면 아래와 같이 . 를 사용한다

$ git add .

추가하면 staging 영역에 파일이 추가된 상황이다.
그리고 상태를 확인하면 아래와 같다.

커밋할 변경 사항에 파일이 추가된 것을 볼 수 있다.


git commit으로 staging 영역에서 repo로 반영

commit 명령어로 staging 영역에서 repo로 반영해본다.

commit을 사용할 때는 commit 메시지가 필요하다.

$ git commit -m "commit 메세지"

그리고 git status를 해본다.

커밋이 성공적으로 되었기 때문에, git status에서 보이지 앞는다. 이제 working dir, staging 영역 그리고 repo 사이에 차이가 없게 된다.


git log로 commit 이력 확인

git log를 이용해 commit 이력을 확인한다.

$ git log

출력화면에서 commit 다음에 나오는 문자열은 commit ID로, commit 위치를 식별할 때 이용한다.


git diff로 working dir과 staging 영역의 차이를 참조

README.md 파일을 수정해본다.

$ echo "hELLO" > README.md

그리고 git diff로 파일 변경 차이를 확인한다.

$ git diff

위와 같이 변경된 부분이 알기 쉽게 표시된다.


git reset으로 변경 취소

수정한 README.md을 그대로 staging한다.

$ git add .

그리고 staging한 파일을 취소하는 경우 git reset 명령어를 사용한다.

$ git reset

스테이징 하지 않았다는 메시지가 표시된다.
git status를 통해 확인해보면 staging 되지 않은 것을 확인할 수 있다.

profile
Better late than never

0개의 댓글