Antilog의 개발로 쓰다
article thumbnail
반응형

Git 명령어 알아보기

2019/11/03 - [Git] - [Git] Git 명령어 살펴보기

 

[Git] Git 명령어 살펴보기

Git 은? Git 컴퓨터 변경 사항 추적, 여러 사용자 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템. Github Git을 사용하는 프로젝트를 지원해주는 웹 호스팅 서버, 오픈소스로 자신의 코드를 공..

antilog.tistory.com

이전 포스팅을 참고하여 내용을 진행합니다. 

이전 포스팅 내용에서 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를 가리키는 포인터이다

라는 사실을 알 수 있다.

 

반응형
profile

Antilog의 개발로 쓰다

@Parker_J_S

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...