2021.08.31 - [Computer Science/Git || Github] - Git 입문 (스테이징과 커밋)
깃에서는 버전을 만드는 각 단계마다 파일 상태를 다르게 표시하므로 파일의 상태를 이해하면 이 파일이 버전 관리의 여러 단계 중 어느 단계에 있는지 파악할 수 있다.
tracked 파일, untracked 파일
git status 명령을 입력했을 때, 작업 트리(working tree)에 있는 파일은 크게 tracked 상태와 untracked 상태로 나뉜다.
저번 포스팅에 이어서 hello.txt 파일을 이용하는데, hello.txt 에 있던 내용은 일부 수정을 하고, 새로운 파일인 hello2.txt라는 파일을 새로 만든다.
앞에서 커밋을 한 이력이 있는 hello.txt 파일은 Changes not staged for commit: 이라고 떠있다. 변경된 파일이 아직 스테이지에 올라가지 않았다는 말이다. 이렇듯, 깃은 한 번이라도 커밋한 이력이 있는 파일은 수정 여부를 계속 추적한다. 진짜 편리하고 고급진 기술이다. 이렇듯, tracked file 이라는 것은 깃이 추적하고 있는 파일을 의미한다.
반면, hello2.txt 같은 경우에는 깃에서 한 번도 버전관리를 한 적이 없기 때문에 추적을 하지 않는다. 따라서 이런 파일을 untracked file 이라고 한다.
$ git add hello.txt
$ git add hello2.txt
명령을 통해 hello.txt 파일과 hello2.txt 파일을 스테이지에 올려보았다.
위처럼 hello.txt 는 modified라고 뜨고, hello2.txt 는 new file이라고 뜬다.\
$ git commit -m "3rd commit"
명령 후,
$ git log
를 통해 커밋 로그를 확인해보았다.
커밋 로그에서 각 커밋에 어떤 파일들이 관련된 것인지 자세하게 확인이 어렵다. 여기서 커밋에 관련된 파일까지 함께 살펴보려면
$ git log --stat
을 사용하면 커밋 메시지와 관련 파일을 확인할 수 있다.
커밋 로그를 살펴보니 세 번째 커밋에서 hello.txt 파일과 hello2.txt 파일이 수정 혹은 추가 되었다는 것을 확인할 수 있다.
**만약 로그 메시지가 너무 많을 경우(commit 기록이 많아서) 한 화면씩 나누어 보여주게 되는데, 이 때 Enter키를 누르면 다음 로그 화면을 볼 수 있고, Q를 누르면 로그 화면을 빠져나오게 된다.
**버전 관리에서 제외하는 법( .gitignore )
- 특정 파일 또는 디렉터리를 버전 관리에서 제외하고 싶을 때, .gitignore 파일을 vim 을 통해 그 안에 해당 파일 혹은 디렉터리 이름이나 파일 확장자를 입력하면 된다.
ex) .gitignore 파일 안 내용
hello.txt
.mp4
wogud/
위와 같은 경우라면, hello.txt 파일을 제외하고, .mp4확장자의 모든 파일을 제외하고, wogud디렉터리를 제외하라는 의미이다.
unmodified, modified, staged 상태
한 번이라도 버전을 만들었던 이력이 있는 파일은 tracked 상태, 즉 깃의 추적을 받는다고 했었는데, 이 tracked 상태인 파일은 깃 명령으로 파일 상태를 확인하면 더 자세한 상태를 알려준다. tracked 파일의 상태가 어떻게 바뀌는지 보자.
아무것도 수정하지 않고, 변경 사항이 없다면 (working tree clean), 현재 작업트리에 있는 모든 파일의 상태가 unmodified, 즉 수정되지 않은 상태임을 의미한다.
이 때, 앞선 hello2.txt 파일의 내용을 수정해보았다.
'Changes not staged for commit:' 과 'modified:' 를 보니 hello2.txt 파일이 수정은 되었으나, 스테이지에 올라가지 않았다는 것이다.
$ git add hello2.txt
를 통해 hello2.txt 파일을 스테이지에 올려보았다.
'Changes to be committed:'를 통해 커밋 직전 단계인 스테이지 위에 hello2.txt가 올라왔다는 것을 확인할 수 있다.
커밋을 한 후 다시 git status를 통해 살펴보니
처음의 'nothing to commit, working tree clean' 즉, unmodified 로 돌아간 것을 확인할 수 있다.
도식화해보면 위와 같은 구조를 상상할 수 있다.
**방금 커밋한 메시지를 수정하고 싶을 때
가장 최근의 커밋한 메시지를 수정하려면
$ git commit --ament
명령을 입력하면 된다. 위 명령을 입력하면 vim 이 실행되고 가장 상단의 커밋 메시지가 뜨게 되는데 이를 수정하면 된다.
/ /문제제기 및 피드백 언제든지 감사히 받겠습니다.
'Computer Science > Git || Github' 카테고리의 다른 글
Git 작업 되돌리기 (0) | 2021.09.01 |
---|---|
Git 입문 (스테이징과 커밋) (0) | 2021.08.31 |