커밋이란 변경된 코드의 이력을 기록하는 것이다
커밋을 사용해서 코드 변경 시점을 저장해두면 코드가 잘못됐을 때 특정 시점으로 돌아갈 수 있게된다
커밋은 수정된 파일의 상태를 파악해서 커밋을 할지 말지 정하는데, 파일의 상태는 아래와 같다

기본적으로 깃 저장소가 워킹 디렉토리이고 그 안의 모든 파일은 Untracked 상태이다
파일은 스테이지 쪽에 있어야 커밋이 가능한데,
그러기 위해서는 워킹 디렉토리 내의 파일 중 원하는 파일을 스테이지에 등록해줘야 한다
일단 스테이지에 등록이 되면 등록한 파일은 Tracked 상태가 되고 똑똑한 깃은 Tracked 상태인 파일을 계속해서 추적한다
Tracked 상태일땐 파일이 수정되면 modified 상태가 돼서 다시 워킹 디렉토리로 가고, 수정된 파일을 커밋하기 위해서는 다시 스테이지에 등록해줘야 한다
이제부터 여러 차례 커밋을 진행해 볼 것이다
파일 생성
먼저 깃 저장소 폴더에서 간단한 HTML 파일을 하나 작성하자
copy con 파일이름.확장자
명령어를 입력하고 내부에 아래 코드를 작성하고
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8" />
<meta name = "viewport" content = "width=device-width, initial-scale = 1">
<title> GIT TEST </title>
</head>
<body>
</body>
</html>
Ctrl + C를 입력하면

이렇게 뜨면서

파일이 생성된 것을 확인할 수 있다
이제 깃 상태를 확인해보자

git status
명령어를 입력하면 깃 상태를 확인할 수 있다
빨간 부분은 Untracked 상태를 나타내며 이는 워킹 디렉토리에 새 파일이 등록되었다는 의미이다
그럼 이제 add 명령어를 통해 해당 파일을 스테이지 영역에 등록해 Tracked 상태로 만들어 줘야 한다
등록

git add 파일명.확장자
명령어로 파일을 등록해주고
status로 상태를 확인해주면 index.htm 파일의 상태가 Tracked가 돼서 스테이지 영역에 등록됐다는 것을 알 수 있다
추가적으로 저장소에 있는 모든 파일을 등록하고 싶으면
git add .
이런식으로 작성해주면 된다
등록 취소
등록을 취소하는 방법은 삭제와 리셋 두가지가 있다
먼저 삭제 (rm)부터 보면
git rm --cached 파일명.확장자
명령어를 입력해 스테이지 영역에 등록된 파일을 삭제한다

그런다음 상태를 확인하면 아까 처음에 Untracked 상태로 돌아간 것을 확인할 수 있다
리셋 (reset)은 먼저 커밋을 한번 완료하고 다시 알아보기로 하자
커밋
git commit
명령어를 입력하면

커밋 메시지를 입력할 수 있게된다
만약 메시지를 입력하지 않으면 커밋 명령이 취소된다
커밋할 때 커밋 메시지는 필수적이다!

i를 입력하면 수정이 가능해지는데, 내부에 커밋 메시지를 입력하고 ESC를 누른후 :wq를 입력하고 엔터를 누르자

그러면 위와같이 커밋이 완료된다

커밋을 완료하면 스테이지 영역은 초기화되고
깃 상태를 확인하면 더 이상 추가된 새로운 파일과 수정된 파일이 없다는 working tree clean 메시지가 뜬다

git log
명령어를 통해 커밋 기록을 확인할 수 있다
최신 커밋 기록부터 내림차순으로 나열된다
아까 말했던 리셋 (reset)은 커밋이 한번이라도 되었을 때 사용해야한다
만약 한번 커밋된 파일을 rm 명령어로 삭제한다면

이전 삭제와 다른 결과가 나온다
커밋 후 삭제는 파일이 삭제 또는 변화된 것으로 간주하기 때문에 커밋된 파일은 리셋으로 정리해야한다

git reset HEAD 파일명.확장자
명령어로 리셋하는데, 리셋 후 상태를 확인하면 제대로 정리된 것을 확인할 수 있다
(근데 이래도 로그는 남아있다 어떻게 못 없애나?)
이번엔 폴더 내 모든 파일의 등록이랑 커밋을 한번에 해보자
git commit -a
명령어를 입력하면 되고

똑같이 커밋 메시지를 작성해준다

로그가 하나 더 생겼다
이제 아까 index.htm 파일 내용을 수정해보자
(windows cmd에 파일 내용 수정 명령어가 없다,,, vi나 vim 깔기 귀찮)
파일을 다이렉트로 수정해주었다

이렇게

파일을 변경하고 깃 상태를 확인하면
modified: ~~ 메시지를 출력한다
만약 수정 이전 (커밋 전 마지막 내용)으로 되돌리고 싶으면
git checkout -- 수정파일이름
명령어를 입력한다
수정된 파일은 modified 상태로 워킹 디렉토리에 있는 상태이다
그렇기 때문에 커밋하기 위해서는 다시 스테이지에 재등록 해야 한다

재등록 하고 깃 상태를 확인하면 위와 같이 등록된 것을 확인할 수 있다
커밋 준비를 마쳤고
아까랑 다른 방법으로 커밋을 진행해보겠다

git commit -m "커밋 메시지"
명령어로 커밋을 진행하면 처음의 방법처럼 에디터를 사용해서 커밋 메시지를 작성하지 않아도 된다
추가적으로
git commit -am "커밋 메시지"
명령어는 워킹 디렉토리에 Untracked 상태에 있는 파일을 스테이지에 등록하면서 커밋까지 진행한다
상태와 로그를 확인하면 커밋이 완료된 것을 확인할 수 있다
메시지가 없는 커밋도 가능한데, 이렇게 메시지가 없는 커밋을 빈 커밋이라고 한다

파일을 먼저 수정하자

깃 상태를 확인하면 파일이 modified 상태가 되었으므로 스테이지에 재등록해준다
다시 깃 상태를 확인하면 초록색으로 변하면서 커밋 준비가 완료된다
빈 커밋 명령어로 커밋 후 깃 상태와 로그를 확인하면 빈 커밋으로 커밋이 완료된 것을 확인할 수 있다
'개발 툴' 카테고리의 다른 글
| [AWS] RDS, EC2 삭제 (0) | 2024.02.17 |
|---|---|
| [Git] gitignore 인식 오류 (0) | 2024.01.14 |
| [Git] GitHub CLI - push 오류, https & ssh 인증 해결하기 (1) | 2023.12.21 |
| [Git] 깃 허브와 로컬 저장소의 연동 (0) | 2023.10.26 |
| [Git] Windows Git 설치와 Git 저장소 생성 (0) | 2023.10.25 |