본문 바로가기
[ git ]

[Git] git - 버전관리 시스템 / git 저장소 만들기(init) 생성 및 커밋하기(add, commit)

by 히앤님 2021. 3. 22.
반응형
SMALL

git bash

window에서 유닉스, 리눅스 계열의 명령어를 통해서 제어할 수 있도록 하는 프로그램.

git의 기본적인 버전관리 명령어를 확인해보자.

▽Codeonweb

codeonweb.com 에 들어가서 "실습" 에서 git을 설정하면 git에 대한 실습도 가능하다.

리눅스 명령어 기능
pwd 내가 어디있는지(현재 프로젝트 폴더 위치) 알려줌
cd 내 위치를 ~로 이동
mkdir 폴더(디렉토리) 만들기
ls 현 위치의 폴더(디렉토리)에 있는 파일 목록 조회
cp 파일 복사
mv 파일 이동
rm 파일 제거
find ~ -name 00 ~(검색경로)에서 00(파일이름) 찾기
cat 00 00(파일이름)의 내용 확인

git으로 저장소 생성 및 커밋하기

1. 생성하기

git

사용할 수 있는 명령어 전체가 나온다.

git init

최초로 프로젝트를 생성할 때 사용한다. 현재 위치한 프로젝트 폴더(디렉토리) 안에 .git 이라는 숨겨진 폴더를 생성한다. 즉, 버전관리의 시작을 명시하는 것.

 

프로젝트 내에는 두가지 파일이 있다. Untracked Tracked로 나뉜다. 버전관리가 되지 않는 파일과 관리가 되는 파일이다.

git status

현재 파일들의 상태를 볼 수 있다. status에서 나올 수 있는 상태는 다음과 같다.

> Initial commit

처음 commit 한 상태.

> Untracked files

현 디렉토리 안에 존재는 하지만 버전관리가 되고 있지 않는 파일이다. (=그니까 git 니가 관리해)

> modified

파일이 수정되었다.

 

2. 트랙킹

git add [파일이름]

이 파일을 관리하라고 git에게 명령한다. (=트랙킹이 시작되는 것)

> Changes to be committed

앞으로 commit 될 파일들, 즉 대기중인 상태를 의미한다. 

- 이렇게 파일을 git에게 일일히 추적해줘야 하는 이유 : 프로젝트를 할 때 임시 파일까지 버전관리를 할 필요가 없으므로 관리 파일을 명확하게 명시해주는 것.

 

참고) add 된 파일을 다시 Untracked 하고 싶을 때

git rm [파일이름]

 

초기에 git을 세팅하는 것이라면, "지금 작성할 버전은 내가 만든 것이다"라고 다른 사람에게 알려주기 위해서 이름을 붙여주어야 한다.

git config --global user.name [이름]

이러면 현 버전을 작성한 사람의 이름이 붙여지고, 

git config --global user.email [이메일주소]

이메일 주소도 함께 포함해서 버전에 표시된다.

이 두가지는 초기에 한번만 세팅하면 된다.

 

3. 저장하기

이제 저장해보자.

git commit

vim이 켜지면서 commit massage가 나온다. 이곳에 어떠한 점이 변화했는지 작성한다. 나중에 다시 찾아내서 복구할 때를 위한 메모를 남기는 셈.

참고) add와 commit을 동시에 하고 싶을 때

git commit -am [설명]

 

마지막으로 commit 된 내역을 확인해본다.

git log

요약하자면,

  1. git에게 버전관리할 디렉토리 위치를 알려준다.
  2. 파일을 만든다.(또는 수정한다) -> 여기서는 아직 버전관리 파일로 지정이 되지 않음(=Untracked)
  3. git add로 버전관리 파일이라는 것을 알려준다.(=Tracked)
  4. git commit으로 저장해준다.
  5. git log로 변경사항을 확인해준다.

왜 add가 필요한가?

본래 commit은 하나의 작업에 한번씩 하는 것이 가장 이상적이다. 하지만 프로젝트를 하다보면 여러 소스코드를 수정한다. 그러다보면 우리는 commit할 시점을 놓치게 된다. git은 이러할 때 add라는 과정을 통해서 commit 하고싶은 파일만 따로 commit할 수 있다. 즉, 여러 변경작업 중 선택적으로 최신버전에 담을 작업만 add한 후, commit 대기상태로 둔 그 파일만 commit 하는 것이다. add를 하지 않으면 git commit을 해도 반영되지 않는다.

이러한 commit 대기상태를 stage area라고 부른다. git add를 하면 그 파일들이 stage area로 이동하는 것.

또한 이 상태에서 commit을 하게 되면 그 파일들은 repository에 이동하게 된다.

상태
Untracked 버전관리할 파일로 지정되지 않은 상태
git add
stage area 버전관리할 파일로 지정한 commit 대기파일 저장소
git commit
repository add된 파일을 commit까지 마친 파일들 최종 저장소

 

4. commit log의 의미

commit log 를 하면 현재 commit한 버전의 정보가 나온다.

이때, commit 뒤에 숫자와 영어로 조합된 문자열이 붙는데, 이것이 바로 로그(log)이다.

로그(log)는 현재 commit 메시지가 가리키는 버전의 고유한 주소이다.

우리는 여러 commit log를 남기게 된다. 각각의 log의 차이를 보고 싶다면 다음 코드로 확인할 수 있다.

git diff [로그1]..[로그2]

결과적으로 로그1과 로그2의 차이점을 볼 수 있다.

diff변경사항을 확인하는 데에 쓰인다.

보통 diff는 commit 전에 마지막으로 변경사항을 리뷰하기 위해 자주 사용된다. 실수를 체크하거나, 빠진 부분을 체크할 수 있는 마지막 확인 방법이다.

반응형
LIST

댓글