기타/git

[Git] 깃 시작하기 - 설치와 기본 사용법

책 읽는 개발자_테드 2021. 1. 14. 20:06
반응형

깃 시작하기 - 설치와 기본 사용법

 

`Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문`의 내용을 정리합니다. 이 글에서 깃을 설치하고, 환경 설정하고, 버전을 관리하는 방법과 관련 명령어를 알 수 있습니다.

 

학습 목표

깃 설치

깃 환경 설정 - git config

깃 저장소 만들기 - git init

스테이지에 올리기 - git add

버전 만들기 - git commit

커밋 메시지 수정 - git commit --amend

변경 사항 확인 - git diff

버전 만드는 단계마다 파일 상태 알아보기

버전 관리에서 제외하기 -  .gitignore


깃 설치

 

https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%84%A4%EC%B9%98



깃 환경 설정 - git config

 

터미널에서 깃에서 버전을 저장할 때 사용될 사용자 정보(이름, 이메일)를 설정한다. 

 

$ git config --global user.name “scshim”

$ git config --global user.email “test@gmail.com

 

깃 저장소 만들기 - git init

 

터미널에서 깃 저장소를 만들 디렉토리를 생성하고, 해당 디렉토리로 이동한다.

 

$ mkdir hello-git

$ cd hello-git

 

이 디렉터리에 저장소를 만들기 위해 터미널에서 git init 명령을 입력한다.

 

$ git init

 

 

ls -al 명령을 사용해서 디렉터리 안의 내용을 확인하면 소스코드 버전이 저장될 저장소인 ‘.git’ 디렉터리가 생성된다. 

 



버전 만들고 관리하기

 

깃은 관리할 파일들의 이름을 그대로 유지하면서 수정 내역을 기록한다. 이를 위해 다음과 같은 구조를 사용한다.


✏️작업 트리(working)는 파일 수정, 저장 등의 작업을 하는 디렉터리다.  앞에서 만들었던 hello-git 디렉터리가 작업 트리다.

✏️ 스테이지는 버전으로 만들 파일이 대기하는 곳이다. 스테이징 영역이라 부르기도 하고, 스테이지의 내용은 .git/index 파일에 저장된다.

ex) 작업 트리에서 10개의 파일을 수정했는데 4개의 파일만 버전으로 만들려면 4개의 파일만 스테이지로 넘긴다.

✏️ 저장소(repository)는 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳이다. 저장소의 내용은 .git/HEAD 파일에 저장된다.

 

문서 수정하기

 

터미널 창에서 기존에 만든 hello-git 디렉터리로 이동한다. 깃 상태를 확인하기 위해 다음과 같이 입력한다.

 

$ git status




위 상태 메세지의 의미는 다음과 같다.

1) 현재 master 브랜치에 있다.

2) 아직 커밋한 파일이 없다.

3) 현재 커밋할 파일이 없다.

 

vim 에디터, word, 한글, 메모장등 편집기를 통해 hello.txt 파일을 생성하고, 파일 내부에 숫자 1을 입력한 후 저장한다. 

 



다시 깃 상태를 확인하기 위해 git status를 입력한다.

 

$ git status

 



방금 전과 다르게 메세지가 변경되었다. branch master에 hello.txt라는 untracked files가 존재한다. 깃에서는 아직 한 번도 버전 관리하지 않은 파일untracked files라고 한다. 이것을 그림으로 나타내면 다음과 같다.

 

 

스테이지에 올리기 - git add

 

작업 트리에서 만들거나 만들 파일에 대해 깃에게 버전 만들 준비를 하라고 알려주는 것을 ‘스테이징’ 또는 ‘스테이지에 올린다’라고 한다. 이때 명령어로 git add를 사용한다.

 

$ git add hello.txt

 

스테이징이 완료되었으니 다시 깃 상태를 확인한다.

 

$ git status

 

 

untracked file: 문구가 changes to be committed로 바뀌었고, hello.txt 파일에 ‘new file:’이라는 수식어가 추가되었다. 새 파일 hello.txt를 앞으로 커밋할 것이라는 의미다. 이것을 그림으로 나타내면 다음과 같다.

 

버전 만들기 - git commit

 

스테이지에 올라온 파일로 버전을 만들 수 있다. 깃에서는 버전을 만드는 것은 ‘커밋(commit)’한다고 한다. 커밋을 할 때는 그 버전에 어떤 변경 사항이 있었는지 메시지를 함께 기록한다. 

 

이때 명령어로는 git commit을 사용한다. 여기에 한칸 띄운 후 -m 옵션을 붙이면 저장할 메시지를 적을 수 있다.

 

$ git commit -m “firstCommit”

 

커밋 후 결과 메시지를 보면 파일 1개가 변경되었고, 파일에 1개의 내용이 추가되었다. 스테이지에 있던 hello.txt 파일이 저장소에 추가된 것이다.

 

 

 

현재 깃 상태를 확인해보면, 버전으로 만들 파일이 없고(nothing to commit) 작업 트리도 수정사항 없이 깨끗하다(working tree clean)는 메시지를 몰 수 있다.

 

 

버전이 제대로 만들어졌는지 확인하려면, git log 명령을 사용하면 된다.

 

$ git log

 

메시지를 확인하면, 방금 커밋한 버전에 대한 설명이 보인다. 커밋을 만든 사람, 만든 시간과 커밋 메시지가 함께 나타난다. commit 옆에 붙어있는 숫자와 알파벳 조합은 ‘커밋 해시’ 또는 ‘깃 해시’라고 부르며, 커밋을 구별하는 아이디 역할을 한다.

 

 

commit 명령어에 -am 옵션을 사용하면 파일을 스테이지에 올리고, 커밋하는 과정을 한 번에 처리할 수 있다. 단, 이 방법은 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용할 수 있다.

 

hello.txt 파일을 열어 숫자 2을 추가한다.

 

 

그리고 commit 명령어에 -am 옵션을 붙여 스테이징과 커밋을 한 번에 처리한다.

 

$ git commit -am “secondCommit”

 

 

git log를 통해 커밋한 내용을 확인하면, 두 번째 버전의 정보를 볼 수 있다.

 

$ git log

 

 

커밋 메시지 수정 - git commit --amend

 

문서의 수정 내용을 기록하는 커밋 메시지를 잘못 입력했다면 git commit --amend 명령어를 통해 커밋을 만든 즉시 커밋 메시지 수정이 가능하다.

 

$ git commit --amend

 

명령어를 입력하면 기본 편집기인 vim이 실행되면서 원래 커밋 메시지가 화면 위쪽에 나타난다. i를 눌러 입력 모드로 진입하여 메시지를 수정할 수 있다.

 

 

수정이 끝나고 vim을 종료하면, 커밋 메시지가 수정되면서 이전 커밋에 더해진다.

 

 

변경 사항 확인 - git diff

 

git diff 명령을 사용하면 작업 트리에 있는 파일과 스테이지에 있는 파일을 비교하거나, 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교해서 수정한 파일을 커밋하기 전에 최종적으로 검토할 수 있다.

 

hello.txt 파일에는 다음과 같은 내용이 추가되어있다.

 

 

내용 중 ‘2’를 ‘two’로 변경하자.

 

 

git status 명령을 사용해 깃의 상태를 확인하면 hello.txt 파일이 수정되었고, 아직 스테이징 상태가 아니라고 출력된다.

 

$ git status

 

 

git diff 명령을 사용하면 다음과 같은 내용이 출력된다.

 

$ git diff

 

 

1에 나타난 빨간색 ‘-2’는 최신 버전과 비교할 때 hello.txt 파일에서 ‘2’가 삭제되었다는 뜻이다.

2에 나타난 초록색 ‘+Two’는 hello.txt 파일에 ‘Two’라는 내용이 추가되었다는 뜻이다.

 

버전 만드는 단계마다 파일 상태 알아보기

 

깃에서는 버전을 만드는 각 단계마다 파일 상태를 다르게 표시된다. 따라서 파일의 상태를 이해하면, 이 파일이 버전 관리의 여러 단계 중 어디에 있는지 알 수 있다.

 

tracked 파일과 untracted 파일

 

파일은 크게 tracked 상태와 untracked 상태로 나뉜다. 두 상태가 무엇을 의미하는지 알아보자. 먼저 hello.txt 파일을 열고 다음과 같이 수정한다.

 

 

그리고 hello2.txt 라는 새로운 파일을 만들어 알파벳 A, B, C, D를 한 줄에 한 글자씩 입력하고, 저장한다.

 

 

hello.txt, hello2.txt 파일 모두 작업 트리에 있다. git status 명령을 사용해 상태를 확인하자.

 

$ git status

 

앞서 커밋한 hello.txt 파일에 대해 ‘Changes not staged for commit’라는 메세지를 볼 수 있다. 변경된 파일이 스테이지에 올라가지 않았다는 뜻이다. 

 

그리고 hello.txt  파일 앞에 modified: 라고 표시 되어 있어 파일이 수정된 것을 확인할 수 있다. 깃은 한 번 이라도 커밋 한 파일의 수정 여부를 계속 추적하며, 깃이 추적하고 있다는 뜻에서 tracked 파일이라 부른다.

 

반면에 hello2.txt 파일에는 ‘untracked files’라고 되어 있다. hello2.txt 파일은 한 번도 깃에서 버전 관리를 하지 않았기 때문이다. 수정 내역을 추적하지 않았다고 하여 untracked 파일이라고 표시한다.

 

이제 두 파일 모두 git add 명령어를 사용해 스테이지에 올려보자.

 

$ git add hello.txt

$ git add hello2.txt

 

그리고 git status를 사용해 상태를 확인하자.

 

마지막 버전 이후 수정된 hello.txt는 modified:로 표시되고, 버전 관리가 처음인 hello2.txt는 new file:로 표시된다. 또한 tracked 파일이나 untracked 파일 모두 스테이지에 올라온 것을 확인할 수 있다.

 

이제 커밋을 요청하고, 로그를 확인하자. git log 명령에 --stat 옵션을 사용하면 커밋에 관련된 파일까지 함께 살펴볼 수 있다.

 

$ git commit -m “thirdCommit”

$ git log --stat

 

 

로그 메시지가 너무 많을 경우 한 화면씩 나누어 보여주고, Enter를 누르면 다음 로그 화면을 볼 수 있다. Q를 누르면 로그 화면을 빠져 나와 다시 깃 명령을 입력할 수 있다.

 

unmodified, modified, staged 상태

 

tracked 상태인 파일은 깃 명령으로 파일 상태를 확인하면 현재 작업 트리에 있는지, 스테이지에 있는지 등 더 구체적인 상태를 알려준다. 먼저 git status 명령을 사용해 깃의 상태와와 파일의 상태를 확인하자.

 

 

작업 트리에 아무 변경 사항이 없다. ‘working tree clean’메시지는 현재 작업 트리에 있는 모든 파일의 상태가 unmodified, 즉 수정되지 않은 상태임을 알려준다.

 

hello2.txt에 ‘A’만 남기고 나머지 내용을 삭제한다. 그리고 다시 git status 명령을 실행하자.

 

 

 

hello2.txt 파일이 수정되었고 아직 스테이지에 올라가지 않은 걸 알 수 있다. ‘Changes not stage for commit:’ 메시지는 파일이 수정된 modified 상태임을 알려준다.

 

이번에는 git add 명령으로 파일을 스테이지에 올리고 git status 명령을 실행하자.

 

 

‘Changes to be committed’은 커밋할 변경 사항이 있음을 알려준다. 이 메시지가 보이면 커밋 직전 단계인 staged 상태이다.

 

스테이지에 있는 hello2.txt 파일을 커밋하고, git status 명령을 실행하자. 

 

커밋이 끝난 후 hello2.txt 파일의 상태가 수정이 없던 unmodified로 돌아간 것을 볼 수 있다.

 

버전 관리에서 제외하기 -  .gitignore

 

버전 관리 중인 디렉터리 안에 버전 관리를 하지 않을 특정 파일 또는 디렉터리가 있다면 .gitignore 파일을 만들고, 그 안에 파일 또는 디렉토리 이름을 입력하면 됩니다.





 

출처

Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문

 

반응형