일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- NeXT
- node
- merge
- async
- MongoDB
- lambda
- crud
- SAA
- Vue
- flask
- 채팅
- 파이썬
- AWS
- SSA
- 중급파이썬
- socket io
- docker
- wetube
- 튜플
- 카톡
- Props
- dict
- react
- git
- EC2
- pandas
- Class
- RDS
- TypeScript
- S3
- Today
- Total
초보 개발자
2 - 2 깃 버전과 상태 본문
커밋 내용 확인하기 -git log, git diff
git log 명령어를 입력하면 지금까지 만든 버전이 화면에 나타나고 각 버전마다 설명도 함께 나타난다.
commit이라는 항목 옆에 영문과 숫자로 된 긴 문자열이 있는데 이것을 커밋 해시,또는 깃 해시라고 한다.
커밋을 구별하는 아이디라고 생각하면 된다.
그리고 HEAD -> master이 것은 이 버전이 가장 최신이라는 표시이다.
Author은 누가 만들었는지
Date에는 언제 만들어 졌는지가 나타나고 그 아래에는 작성자가 기록한 커밋 메시지가 나옵니다
만약 큰 규모의 프로그램을 짠다고 해보자
수만 줄 짜리 소스코드를 수정한 다음 저장소에 있는 최근 버전과 비교해서 어떤 부분이 다른지 찾아야 한다고 어떻게 할까?? 커밋메시지를 참고해도 구체적으로 어디가 어떻게 수정되었는지 파악할 수가 없다.
이럴때 git diff명령어를 사용하면 작업트리에 있는 파일과 스테이지에 있는 파일을 비교하거나,
스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교해서 수정한 파일을 커밋하기 전에 최종적으로 검토가능하다.
작업트리와 저장소도 가능
나는 hello.txt에 처음에 hello git!이라고 하여 커밋을 하였고 (message1) 두번째에는 !!을 추가하였다 (message2)
자 hello.txt파일에는 2줄이 입력되어있고 저장소에는 2개의 버전이 저장되어있을 것이다.
이번에 !!을 지우고 bye git !!을 추가한 후 저장해보겠다.
git status를 해보면 hello.txt 파일이 수정되었고 아직 스테이징 상태가 아니라고 나온다!!
방금 수정한 hello.txt파일이 저장소에 있는 최신 버전의 hello.txt와 어떻게 다른지 확인해보려고한다.
이 경우 git diff명령을 사용한다.
-!! 이 부분은 최신 버전과 비교할 때 hello.txt파일에서 -!!가 삭제 되었다는 뜻이다.
+bye git !! 이 부분은 hello.txt에 bye git !! 이 추가되었다는 뜻입니다.
이렇게 작업 트리에서 수정한 파일과 최신 버전을 비교한 다음, 수정한 내용으로 다시 버전을 만들려면 스테이지에 올린 후 커밋하고 수정한 내용을 버리려면 git checkout명령을 사용해 수정 내용을 취소합니다. git checkout사용법은 조금 뒤에서 알아보자!
이어지는 실습을 위해 원래 hello.txt에 있던 내용인 !!로 바꾸어 두도록 하자.
버전 만드는 단계마다 파일 상태 알아보기
깃에서는 버전을 만드는 각 단계마다 파일 상태를 다르게 표시한다.
그래서 파일의 상태를 이해하면 이 파일이 버전 관리의 여러 단계 중 어디에 있는지, 그 상태에서 어떤 일을 할 수있는지 알수 있다. 하지만 눈에 보이는 것이 아니기에 머릿속으로만 가능하다.
tracked 파일과 untracked 파일
git status 명령을 사용하면 파일 상태와 관련된 메시지가 나타난다.
작업트리에 있는 파일은 크게 tracked 상태와 untracked상태로 나뉜다.
hello.txt에 기존에 있던 내용에 3rd line이라고 추가한 뒤 저장하였다.
그리고 hello2.txt라는 파일을 만들어 알파벳 a,b,c,d,를 한 줄에 한글자씩 입력하고 저장하였다.
hello.txt와 hello2.txt모두 작업 트리에 있다. git status를 사용해 어떤 상태인지 확인해 보자!
앞에서 커밋했던 hello.txt파일은 Change not staged for commit: 이라고 되어있다. 변경된 파일이 아직 스테이지에 올라가지 않았다는 뜻이다. 그리고 파일 이름 앞에 modified: 라고 되어 있어 hello.txt가 수정되었다는 것을 알 수 있습니다.
이렇게 깃은 한 번 이라도 커밋을 한 파일의 수정 여부를 계속 추적 합니다. 깃이 추적하고 있다는 뜻에서 tracked파일이라고 부릅니다.
반면 hello2.txt 파일 앞에는 아무 것도 없고 바로 위에는 untracked files:라고 되어 있다. hello2.txt파일은 한 번도 깃에서 버전 관리를 하지 않았기 때문에 수정 내역을 추적하지 않는다. 그래서 untracked파일 이라고 표시한다.
수정했던 hello.txt파일과 hello2.txt파일은 모두 git add 명령을 사용해서 스테이지에 올릴 수 있다.
git add hello.txtgit add hello2.txtgit status를 해보자
마지막 버전 이후에 수정된 hello.txt는 modified:로 표시되고, 한 번도 버전 관리하지 않았던 hello2.txt는 new file:로 표시 됩니다. 또한 tracked파일이나 untracked파일 모두 스테이지에 올라온 것을 확인할 수 있습니다.
git commit -m "message3"
git log를 해보자 이 커밋에는 hello.txt.를 수정한 내용과 새로 만든 hello2.txt내용이 다 포함이 된다.
그런데 각 커밋에 어떤 파일들이 관련된 것인지 알 수가 없다.
커밋에 관련된 파일까지 함께 살펴보려면 git log 명령에 --stat 옵션을 사용해야 한다.
가장 최근의 커밋부터 순서대로 커밋 메시지와 관련 파일이 나열된다.
'message3'커밋은 hello.txt, hello2,txt 파일과 관련되어 있고, 'message2'는 hello.txt파일과 관련이 되어있다는 것을 알 수 있다.
이 화면에서 enter키를 누르면 다음 로그메시지를 보여주고 나가려면 q를 누르면 된다.
'깃 & 깃허브' 카테고리의 다른 글
3 - 1 깃과 브랜치 (0) | 2021.09.14 |
---|---|
2 - 4 특정 커밋으로 되돌리기 (0) | 2021.09.13 |
2 - 3 작업 되돌리기 (0) | 2021.09.13 |
2 - 1 깃 저장소 만들기 (add, commit) (0) | 2021.09.13 |
git....github... (0) | 2021.09.13 |