본문 바로가기
Git

[Git] 버전 만들기

by shur_ 2023. 11. 11.

working directory, stage, respository

 
 

 

  • 작업 트리 : 작업 트리(working tree)는 파일 수정, 저장 등의 작업을 하는 디렉터리이다. 작업 디렉터리(working directory)라고도 한다. 우리 눈에 보이는 디렉터리가 작업 트리이다.
  • 스테이지 : 버전으로 만들 파일이 대기하는 곳. 스테이징 영역(staging area)라고 함. 예를 들어 작업 트리에서 파일 10개를 수정했는데 4개만 버저으로 만들려면 이 파일 4개만 스테이지로 넘겨주면 됨.
  • 저장소 : repository는 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳. 저장소라고 불리기도 함.

 
 
스테이지와 저장소는 눈에 보이지 않는다. 깃을 초기화 했을 때 만들어지는 '.git' 디렉터리 안에 숨은 파일 형태로 존재하는 영역이기 때문이다.
 
 

버전 만들기 예시

 
hello.txt 파일 문서를 수정하고 저장하면 그 파일은 '작업 디렉터리'에 있게 됨

 
그리고 수정한 hello.txt 파일을 스테이지에 넣는다. 
그 후 '커밋(commit)'을 하게 되면 새로운 버전이 생성되면서 스테이지에서 대기하던  파일이 모두 저장소에 저장된다.


 
'git status'를 입력해보자.
 

git status
git status

 
- git status 

  • On branch master : 현재 main 브랜치에 있음.
  • No commits yet : 아직 커밋한 파일이 없음.
  • nothing to commit : 현재 커밋할 파일이 없음

 

 
hello.txt 파일을 추가 한 뒤 'git status' 실행하면 위와 같은 변경된 결과가 나온다.
Untracked files라는 말이 나오는데, git에서는 버전을 아직 한 번도 관리하지 않은 파일을 untracked files라고 한다.
 

 
현재 위 단계까지 왔다.
 
 
워킹 디렉터리에서 파일을 만들거나 수정했다면 스테이지에 수정한 파일을 추가할 것이다.
이렇게 깃에게 버전 만들 준비를 하라고 알려 주는 것을 스테이징(staging) 또는 스테이지에 올린다고 한다.
 

git add hello.txt

 
깃에서 스테이징할 때 사용하는 명령은 git add 다.
 

아무내용도 나타나지 않지만 warning이 뜬다.
 

* 깃에서 사용하는 명령은 리눅스를 기반으로 하고, 윈도우에서는 깃 배쉬를 거쳐서 깃 명령을 사용한다. 윈도우의 줄 바꿈 문자와 리눅스의 줄 바꿈 문자는 다르다. 개행 문자 또는 eol(end of line)이라고 하는 줄 바꿈 문자란 텍스트 문서에서 엔터를 눌렀을 때 그 위치에 삽입되는 문자다. 윈도우에서는 문서를 저장하면 줄이 바뀌는 자리에 눈에 보이지 않는 CR(Carriage Return), LF(Line Feed)문자가 삽입된다(둘을 합쳐서 CRLF 문자라고 한다.) 리눅스와 맥에서는 LF 문자가 삽입된다. 위의 warning이 뜨는 이유는 깃에서 텍스트 문서의 CRLF 문자를 LF 문자로 자동 변환해서 커밋할 것이라는 의미이다. 사용자가 어떤 조치를 따로 하지 않아도 되므로 그냥 넘어가도 되지만 왜 저런게 나오는지 이해해보자.
 

'git status'로 상태를 확인해보자.

 

 
Untracked files 가 changes to be committed로 바뀐걸 볼 수 있다.
hello.txt 앞에 new file 이라는 말도 추가되어 있다.
새로운 파일 hello.txt이 있고, 커밋할 변화가 생겼다는 뜻이다.
 

 
add로 스테이지까지 올려 놓은 현재 상황은 위의 그림과 같다.
 
이제 스테이징한 파일을 커밋하는 단계를 가봐야한다.
버전을 만드는 것을 'commit'한다고 한다.
커밋할 때는 버전의 변경 사항을 확인할 수 있도록 메세지를 함께 기록한다. (커밋 메세지)
 

git commit -m " "

 
git commit -m "message1" 을 입력한다.
커밋 명령어가 commit 이고 -m 옵션을 붙여서 메세지를 적는다.
 
커밋 후 터미널 창을 보면 '1 file changed, 2 insertions(+)'이라고 나타나있다. 파일 1개가 변경되었고 2개의 내용이 추가되었다고 나와있다.
 

 
다시 git status로 확인해보면 'nothing to commit, working tree clean' 이라는 메세지가 나온다.
스테이지에서 커밋이 처리 되었으니 깨끗하게 되었다.
 
버전이 제대로 만들어졌는지 확인하기 위해 'git log'를 사용해보자.

 
방금 커밋한 버전을 설명하는 정보가 나타난다.
Author에 만든사람, Date에 만든 시각, 아래에 커밋 메세지가 나타난다.

 
위의 그림까지 진행되었다.
 


 

스테이징과 커밋 동시에 하기

 
수정한 파일을 하나씩 스테이지에 올린 후 커밋할 수 있지만, 수정한 내용을 스테이지에 올림과 동시에 커밋하는 명령어도 있다.
단 이 방법은 한 번이라도 커밋을 한 파일을 다시 커밋할때만 사용할 수 있다.
 

git commit -am ""

 
'git commit -am "커밋메세지"'를 입력하면 수정한 파일을 스테이징과 동시에 커밋한다.
 

 
'git log'로 확인해보자
 

 
커밋되어서 새로운 버전이 생긴 것을 확인할 수 있다.
 
git commit -am 명령에서의 -am은 Git 명령어의 옵션을 나타낸다.

-a: "all"을 의미. 이 옵션은 모든 변경된 파일을 자동으로 스테이징(Staging) 영역에 추가한다. 즉, 수정된 파일들을 git add 명령을 사용하지 않고도 한 번에 스테이징할 수 있다.
-m: "message"를 의미합니다. 이 옵션은 커밋 메시지를 직접 명령어에서 입력할 수 있게 한다. 커밋 메시지는 변경 사항을 설명하는 간결한 메시지로, 커밋에 대한 설명이나 변경의 목적을 나타내는 데 사용된다.
따라서 git commit -am "커밋 메시지"는 수정된 모든 파일을 자동으로 스테이징하고, 그에 대한 커밋 메시지를 입력하여 간편하게 커밋하는 명령어이다. 주의할 점은 이 옵션은 새로 생성된(untracked) 파일은 스테이징에 추가하지 않으므로, 새로 생성된 파일이 있다면 git add 명령을 별도로 사용해야 한다.
 


git status 으로 파일의 상태를 알 수 있다

'Git' 카테고리의 다른 글

[Git] 커밋 메세지 수정하기 / 작업 되돌리기  (0) 2023.11.11
[Git] 커밋 확인하기  (0) 2023.11.11
[Git] 시작하기 / 기본  (0) 2023.08.17
git -f 실수  (0) 2023.01.10
Git(2.38.0) 설치하기  (0) 2022.10.09

댓글