커밋 기록 자세히 살펴보기 — git log
• 깃에서 자주 사용하는 명령으로, 커밋했던 기록을 살펴보는 git log가 있음
• git log 명령을 입력하면 지금까지 만든 버전이 화면에 보이고 버전마다 설명도 함께 나타남
• commit이라는 항목 옆에 영문과 숫자로 된 긴 문자열이 나타나는데
이것을 커밋 해시(commit hash), 또는 깃 해시(git hash)라고 함
• 커밋을 구별하는 ‘아이디’라고 생각하면 쉬움
• 커밋 해시 옆에 있는 (HEAD -> main)는 이 버전이 가장 최신이라는 표시
• Author 항목에는 버전을 누가 만들었는지, Date 항목에는 버전이 언제 만들어졌는지 나타남
• 그 아래에는 작성자가 기록한 커밋 메시지가 나옴
• 이렇게 git log 명령을 입력했을 때 나오는 정보를 묶어
간단히 커밋 로그라고 함
변경 사항 확인하기 — git diff – (1)
1. 앞의 내용을 계속 따라왔다면 hello.txt 파일에는 숫자 1부터 2까지 입력되어 있고, 저장소에는 2개의 버전이 저장되어 있음, 빔에서 hello.txt 파일을 열고 기존 내용 중에서 ‘2’를 지우고 ‘two’를 추가한 후 저장
$ vim hello.txt
2. git status 명령을 사용해 깃의 상태를 확인해 보면 hello.txt 파일이 수정되었고, 아직 스테이징 상태가 아니라고 나옴
$ git status
3. 방금 수정한 hello.txt 파일이 저장소에 있는 최신 버전의 hello.txt와 어떻게 다른지 확인하기 위해 git diff 명령을 사용
$ git diff
4. ‘-2’는 최신 버전과 비교할 때 hello.txt 파일에서 ‘2’가 삭제되었다는 뜻
‘+two’는 hello.txt 파일에 ‘two’라는 내용이 추가되었다는 뜻
작업 트리에서 수정한 파일과 최신 버전을 비교한 후 수정한 내용으로 다시 버전을 만들려면 스테이지에 올린 후 커밋하고, 수정한 내용을 버리려면 git restore 명령을 사용해 취소
5. 이어지는 실습을 위해 hello.txt를 원래대로 되돌려 놓아야 함
빔에서 hello.txt 파일을 열고 ‘two’ 부분을 숫자 ‘2’로 수정한 후 저장
tracked 파일과 untracked 파일
1. 빔에서 hello.txt 파일을 열고 숫자 ‘3’을 추가한 후 저장
$ vim hello.txt
2. 다음과 같이 입력해서 빔에 hello2.txt라는 새로운 파일을 만듦
$ vim hello2.txt
3. 새로 만든 hello2.txt에 알파벳 a, b, c, d를 한 줄에 한 글자씩 입력하고 파일을 저장한 후 편집기를 종료
4. hello.txt 파일과 hello2.txt 파일 모두 작업 트리에 있음
git status 명령을 사용해 어떤 상태인지 확인
$ git status
5. 앞에서 커밋했던 hello.txt 파일은 ‘Changes not staged for commit:’이라고 되어 있음
변경된 파일이 아직 스테이지에 올라가지 않았다는 뜻
그리고 파일 이름 앞에 modified: 라고 되어 있어 hello.txt가 수정되었다는 것을 알 수 있음
깃은 한 번 이라도 커밋한 파일은 계속해서 수정 사항이 있는지 추적
깃이 추적하고 있다는 뜻에서 tracked 파일이라고 함
반면에 hello2.txt 파일 앞에는 아무것도 없고 바로 위에는 ‘untracked files:’이라고 되어 있음
hello2.txt 파일은 한 번도 커밋하지 않았으므로 수정 내역을 추적하지 않음
그래서 untracked 파일이라고 표시
6. 수정한 hello.txt 파일과 수정하지 않은 hello2.txt 파일 모두 git add 명령을 사용해서 스테이지에 올릴 수 있음
$ git add hello.txt
$ git add hello2.txt
7. git status를 사용해 상태를 확인
마지막 버전 이후에 수정한 hello.txt는 modified:라고 표시되고, 한 번도 버전 관리를 하지 않은 hello2.txt는 new file:로 표시됨
8. 이 커밋에는 hello.txt를 수정한 내용과 새로 만든 hello2.txt 내용이 다 포함
커밋 메시지는 다음과 같이 작성하고 커밋이 성공적으로 되었다면 로그를 확인
$ git commit -m "message3"
$ git log
9. ‘message3’라는 메시지를 붙인 커밋이 보이는데 각 커밋에 어떤 파일이 관련되었는지 알 수 없음
10. 커밋과 관련된 파일까지 함께 살펴보려면 git log 명령에 --stat 옵션을 사용
$ git log --stat
11. 가장 최근 커밋부터 순서대로 커밋 메시지와 관련 파일이 나열됨
message3 커밋은 hello.txt, hello2.txt 파일과 관련되어 있고, message2는 hello.txt 파일과 관련되었다는 것을 알 수 있음
버전 만드는 단게마다 파일 상태 알아보기
unmodified, modified, staged 상태
1. ls -la 명령을 사용해 hello-git 디렉터리를 살펴보면 앞에서 버전을 저장한 hello.txt와 hello2.txt 파일이 있음
2. git status 명령을 사용해 깃의 상태와 파일의 상태를 확인하면 작업 트리에 아무 변경 사항도 없음
‘working tree clean’이라고 나타나면 현재 작업 트리에 있는 모든 파일의 상태는 unmodified라는 뜻
3. hello2.txt에서 a만 남기고 나머지 내용을 삭제한 후 파일을 저장하고 편집기를 종료
$ vim hello2.txt
4. git status 명령을 실행하면 hello2.txt 파일이 수정되었고 아직 스테이지에 올라가지 않았다고 나타남
‘Changes not stage for commit’라는 메시지가 나타나면 파일이 수정만 된 modified 상태를 뜻함
5. git add 명령을 사용해 스테이지에 올리고 git status 명령을 실행해 보세요. 커밋할 변경사항이 있다고 함
‘Changes to be committed:’라는 메시지가 나타나면 커밋 직전 단계, 즉 staged 상태
$ git add hello2.txt
$ git status
6. 스테이지에 있는 hello2.txt 파일을 커밋하고 git status 명령을 실행
커밋을 끝내고 나면 hello2.txt 파일의 상태는 수정하기 직전인 unmodified 상태로 돌아감
$ git commit -m "delete b, c, d"
$ git status
* 방금 커밋한 메세지는 수정이 가능 Git commit --amend
편집기
'Git,GitHub' 카테고리의 다른 글
Git 명령어 정리 및 복습 (0) | 2023.01.02 |
---|---|
깃(Git) - 작업 되돌리기 - 05 (0) | 2023.01.02 |
깃 - 커밋 만들기 (연습) (0) | 2023.01.02 |
깃(Git) - 깃 버전 만들기 - 02 (0) | 2023.01.02 |
깃(Git) - 저장소 만들기 - 01 (0) | 2023.01.02 |