깃 저장소 만들기
- 먼저 hello-git 디렉토리를 만든 후 해당 디렉토리로 이동한다.
- ls -al 명령어로 현재 디렉토리 안의 내용을 살펴본다.
- 마침표가 하나(.)인 항목은 현재 디렉토리를 나타내고, 마침표가 두개(..)인 항목은 상위 디렉토리를 나타낸다.
$ git init
: 깃 초기화하기
- 이 디렉토리에 저장소를 만들기 위해 git init 명령어를 입력한다.
- git init : 깃을 사용할 수 있도록 디텍토리를 초기화 하는 작업
- Initialize empty Git repository in ~ 이라는 명령어가 나오면 성공 !
- ls 명령어를 통해 한번 더 디렉토리 안을 확인해보니 '.git'이라는 디렉토리가 생겼다.
- 이 디렉토리가 깃을 사용하면서 버전이 저장될 '저장소 (Repository)' 이다.
- .git 디렉토리는 기본적으로 숨겨져 있다. 탐색기에서 '숨긴 항목'을 체크해야 확인할 수 있다.
작업 트리에서 빔으로 문서 수정하기
$ git status
: 깃 상태를 확인하는 명령어
- On branch master : 현재 master 브랜치에 있음
- No commits yet : 아직 커밋한 파일이 없음
- nothing to commit : 현재 커밋할 파일이 없음
- vim을 통해 hello.txt 파일을 생성 후 저장하였다.
- git status로 확인해보면 untracked files로 분류되어있다.
- untracked file : 한번도 버전 관리 하지 않은 파일
- 지금까지 한 작업은 작업 트리에 문서 파일을 만든 것이다.
수정한 파일을 스테이징하기
- 작업트리에서 파일을 수정했다면, 스테이지에 수정한 파일을 추가한다.
- 이렇게 깃에서 버전 만들 준비를 하라고 알려주는 것을 '스테이징(staging)' 또는 '스테이지에 올린다'라고 표현한다.
- 스테이징 내용을 .git/index 파일에 저장하기 때문에 '인덱스에 등록한다'라고도 한다.
$ git add
- 'git add 파일이름' 명령어를 통해 스테이징을 하고 git status를 통해 확인한 결과이다.
- untracked filed:라는 문구가 changes to be commited:로 바뀌었다.
- hello.txt 파일 앞에 new file:이라는 수식어는 '새 파일 hello.txt를 (앞으로) 커밋할 것이다'라는 뜻이다.
- 지금까지 한 작업은 hello.txt를 스테이지에 추가한 것이다.
❔스테이지에 올릴 때 경고 메시지가 나타나는 이유
- 윈도우의 줄바꿈 문자와 리눅스의 줄바꿈 문자가 다르기 때문에 발생한다.
- 윈도우에서 문서를 저장했을 경우 줄이 바뀌는 자리에 CR 문자와 LF 문자가 삽입된다. (CRLF 문자)
- 리눅스와 맥에서는 문서를 저장했을 때 줄이 바뀌는 자리에 LF 문자가 삽입된다.
- 때문에 윈도우에서 텍스트 문서를 스테이지에 올릴 때 'Warning: LF will be replaced nt CRLF in hello.txt'같은 경고 메시지가 나타나는 것이다.
- 이는 깃에서 자동으로 텍스트 문서의 CRLF 문자를 LF 문자로 변환해 커밋할 것이라는 의미이다.
스테이지에 올라온 파일 커밋하기
파일이 스테이지에 있다면 이제 버전을 만들 수 있다. 깃에서 버전을 만드는 것을 '커밋(Commit) 한다'고 한다.
$ git commit
- git commit 뒤에 -m 옵션을 붙이면 커밋과 함께 저장할 메시지를 적을 수 있다.
- 1 file changed, i insertion(+) : 파일 1개 변경, 파일에 1개의 내용이 추가되었다고 나타난다. 스테이지에 있던 hello.txt. 파일이 저장소에 추가된 것이다.
- git status의 결과 메시지를 보면 버전으로 만들 파일이 없고 (nothing to commit) 작업 트리도 수정사항 없이 깨끗하다(working tree clean)고 나타난다.
$ git log
: 저장소에 저장된 버전을 확인
- 지금까지 한 작업은 스테이지에 있던 hello.txt 파일의 버전을 저장소에 만든 것이다.