Git 명령어 알아보기 |
2019/11/03 - [Git] - [Git] Git 명령어 살펴보기
이전 포스팅을 참고하여 내용을 진행합니다.
이전 포스팅 내용에서 HEAD의 개념을 추가하여 알아봅시다.
Git 자세한 과정, HEAD와 master |
현재 상태는 해당 폴더를 git으로 관리하기위해 init 명령어를 사용한 상태입니다.
이 상태에서 파일을 해당 파일에 추가하면
git에서는 해당 파일은 한번도 깃 저장소에서 추적된 적이 없기 때문에 Untracked 상태입니다.
여기서 add를 하게 되면 git 명령어 알아보기 포스트에서 처럼 파일은 staging area로 넘어갑니다.
그리고 commit을 하면 로컬레포지터리로 이동하고 그와 동시에 HEAD와 master 브랜치는 위 그림과 같이 현재 커밋을 가리키게 된다.
git으로 직접 보기 |
먼저 git으로 테스트할 디렉토리를 만들어 봅시다
$mkdir gittest
위 명령어는 gittest라는 디렉토리를 생성하는 명령어 입니다.
그리고 해당 디렉토리로 이동하기 위해서
$cd gittest/
위의 명령어로 gittest 디렉토리로 이동합니다.
지금 생성한 디렉토리를 git으로 관리하기 위해서 init을 하고 해당 파일에 test.txt라는 테스트 파일을 만들어 줍니다.
$git init
$echo "test" > test.txt
이렇게 하면 현재 gittest라는 디렉토리를 만들어서 이동하였고, 해당 파일을 git으로 관리하기 위해서 init명령어를 사용하고 test.txt라는 파일을 추가한 상태입니다.
이 상태에서 status로 현재 상태를 확인하면
$git status
다음과 같이 지금 현재 브랜치는 마스터인데, 커밋이 없다는 말과
추가한 test 파일이 Untracked 상태임을 확인 가능합니다.
$git add test.txt
$git commit -m "1st commit"
위 명령어로 commit 까지 진행하면
master는 root-commit 즉 뿌리가되는 커밋이고 efc50ed라는 커밋 id를 가집니다.
여기서 git log로 현재 커밋 내역을 보면
$git log
아까 commit 에서 본 커밋이 진행되었고 HEAD는 master를 가리키며 해당 커밋 작성자와 작성일, 그리고 커밋 내용을 표시합니다.
HEAD와 master branch가 가지는 값 |
$cd .git/
위 명령어로 해당 파일을 관리하는 git폴더에 들어가서 ls로 목록을 뽑아보면 해당 파일안에
HEAD가 존재하는 것을 볼 수 있다.
$cat HEAD
$cat refs/heads/master
위 두 명령어로 HEAD가 가리키는 값이 무엇인지 확인이 가능하다.
cat HEAD로 HEAD가 무엇을 가지고있는지 파일 내용을 간단히 출력하면
ref: refs/head/master 라는 내용을 볼 수 있는데
여기서 ref:는 레퍼런스(reference) 즉 뒤에 내용을 참조하는 내용이므로
HEAD는 master라는 branch를 가리키는 포인터임을 알 수 있다.
그리고 HEAD가 가리키는 master가 가진 값을
cat refs/heads/master로 뽑아보면
아까 log로 확인한 최신의 커밋을 담고 있는 것을 볼 수 있다.
즉,
master는 현재 커밋을 값을 저장하고 있다.
HEAD는 master라는 branch를 가리키는 포인터이다
라는 사실을 알 수 있다.
'Git > Git - 시작하기' 카테고리의 다른 글
[Git] merge, rebase 충돌(conflict)이란? (0) | 2019.11.18 |
---|---|
[Git] merge, rebase 를 위한 실습환경 만들기 (0) | 2019.11.18 |
[Git] 자세히 알아보기, branch, tag (1) | 2019.11.09 |
[Git] Git에서 commit id로 hash 값을 쓰는 이유, commit id 알아보기 (0) | 2019.11.04 |
[Git] Git 명령어 살펴보기 (0) | 2019.11.03 |