변경한 파일을 저장해보자 :: git commit
Git Tutorial 5
Stage한 파일을 Commit해보자
Git Tutorial 4에서 우리는 실제로 Commit할 파일들을 선택하는 방법을 배웠습니다.git add [파일명]
기억나시나용?
Commit이라는 단어를 정확하게 이해하고 Stage한 파일들을 저장하는git commit
명령어에 대해서 배워봅시다!
Commit의 정확한 뜻
앞에서 제가 Commit
은 하나의 버전이라고 했습니다.
아직 Commit
의 뜻이 애매할 수도 있을 것 같아서 한번 정확하게 짚고 넘어가겠습니다.
Commit의 사전적 의미
Commit
을 번역하면? "범하다", "위태롭게 하다", "몸을 맡기다", "저지르다", "약속하다"...
먼저 Commit
을 영한사전에서 찾아보면 위와 같은 뜻들이 나옵니다. "범하다"? "위태롭게 하다"? 우리가 사용하는 Commit의 뜻이랑 많이 달라 이해가 되지 않습니다.
저는 Git을 처음 배울 때 그냥 단어가 저렇게 굳어진 것이므로 사전적인 뜻과 달라도 그냥 받아들이고 외우면 된다고 배웠습니다. 하지만 제가 아는 영단어의 뜻과 달라 많이 찝찝했습니다. 그래서 제 나름대로의 방식으로 Commit이라는 단어를 이해했습니다.
Commit의 뜻을 어원으로 이해해보자
어근
co
또는com
은 "함께", "같이"라는 의미가 있습니다.mit
또는mitt
은 "보내다", "두다", "놓다"라는 의미가 있습니다.
예를 들어서, emit은 e(밖으로 나가다) + mit(보내다)가 결합해서 "방출하다"는 뜻이 됩니다.
Commit은 Com(함께) + mit(보내다 또는 놓다)가 결합했으니 "함께 두다" 또는 "함께 보내다"라고 이해할 수 있습니다. 이렇게 이해하면 우리가 Git에서 사용하는 Commit은 뜻과 통합니다.
Git에서 사용하는 Commit의 뜻: "Stage한 파일을 모두"(com - 함께) + "저장한다"(mit - 놓다)
위와 같이 Commit의 뜻을 이해하면 외우기 편할 것 같습니다 :)
git commit
이 실제로 하는 일들
git commit
명령어는 현재 Stage된 파일의 스냅샷(Snapshot)을 저장합니다.
git commit
명령어는 현재 Stage된 파일들을 저장합니다. 파일을 Stage할 때 그 순간의 상태를 저장하는 것이 마치 사진을 찍는 것과 같아서 스냅샷(Snapshot)을 저장한다고 표현합니다.
git commit
을 하면 Stage됐던 파일은 Git이 안정적으로 보관하게 됩니다. 실제로 저장됐다는 말입니다. 그래서 언제든지 그때의 스냅샷을 그대로 불러올 수 있습니다.
실제로 Commit을 해봅시다
Commit을 하면 필수적으로 메시지를 남기도록되어 있습니다. Commit할 때 어떤 변화가 일어났는지 알려주기 위함입니다.
Commit에 달린 메시지로 우리는 특정 Commit에서 어떤 것이 구현되었는지 쉽게 알 수 있습니다. 그렇기 때문에 "."이나 "ㅁㄴㅇㄹ"같은 메시지가 아니라 유의미한 메시지를 남기는 것이 좋습니다.
기본적인 Commit 명령어
git commit
위의 기본적인 명령어로 비어있는 git-practice 저장소에서 a.txt 파일을 만들어서 한번 그 파일을 Commit 해봅시다.
1. git-practice 폴더를 Git 저장소를 만듭니다.
2. a.txt라는 새로운 파일을 만들어봅시다.
git status
명령어로 현 저장소의 상태를 확인해볼까요?
a.txt라는 파일이 새로 들어왔다는 것을 알 수 있습니다.
3. Commit을 하기 위해서 Commit할 파일을 Stage해야한다고 했습니다.
a.txt 파일을 Stage해봅시다.
git add
명령어로 a.txt 파일을 Stage했습니다. 이제부터 a.txt는 Commit될 파일이되고 Git에 의해서 관리(Tracked)됩니다.
git status
명령어로 a.txt의 상태가 어떻게 변했는지 확인해볼까요?
a.txt 파일이 초록색으로 나오며 Commit될 파일이라고 표시되는 것을 확인할 수 있습니다.
4. 실제로 Stage한 a.txt 파일을 기록하기 위해 git commit
명령어를 실행합니다.
git commit
명령어를 실행하면 메시지를 남기는 창으로 이동합니다. 위의 창은 vi 에디터 창입니다. Window 메모장이나 Visual Studio Code처럼 텍스트 에디터입니다. 처음에 접하시는 분들은 어려울 수 있습니다. git-bash는 기본적으로 vi 에디터로 설정되어 있습니다. vi를 모르신다면 유튜브 vi 사용법 영상 하나를 보고 오시는 것을 추천합니다. 일단 실습을 진행해야 하니 간단히 설명해드리겠습니다.
vi에서 글을 적으려면 삽입(Insert) 모드로 전환해야 합니다. vi는 그것을 "i"를 침으로써 진입합니다. 한번 i
를 쳐보겠습니다.
* 만약에 저 모드로 진입이 안 되신다면 ESC
키를 누르고 다시 i
를 눌러보세요.
이 상태에서 우리는 메시지를 칠 수 있습니다. 이 Commit은 a.txt를 생성했다는 기록입니다. "a.txt 생성함"이라고 메시지를 치겠습니다.
지금 우리는 임시적으로 메시지를 쳤고 아직 저장하진 않은 상태입니다. 메시지를 저장하면 삽입모드에서 빠져나와야 합니다. 삽입모드에서 빠져나오려면 ESC
키를 누르면 됩니다.
삽입모드를 빠져나왔다면 다음과 같이 아래에 "-- 끼워넣기 --" 텍스트가 없어야 합니다.
이 메시지를 저장하기 위해서는 우리는 "저장해라!"라고 명령해야 합니다. 우리는 이와 같이 모드 전환이 아닌 특수한 명령어는 ":"을 먼저 친 후에 적습니다. 저장해라는 명령어로 vi는 Write의 약자인 "w"를 사용합니다.
따라서 저장하기 위해서는 이 창에서 :w
라고 쳐야합니다. 한번 실행해봅시다.
다음과 같이 아래에 "~~~ 저장 했습니다."라고 뜨면 성공적으로 저장된 것입니다. 이제는 우리가 원하는 메시지를 성공적으로 저장했으니 vi 에디터를 종료하고 다시 Git으로 빠져나가야 합니다. 빠져나가는 명령어로 vi는 Quit의 약자인 "q"를 사용합니다.
모드 전환이 아닌 특수한 명령어이기 때문에 :q
라고 쳐야합니다. 한번 실행해봅시다.
그러면 다시 git-bash 창으로 돌아오게 됩니다. 보시면 이 Commit에서 하나의 파일이 바뀌었다고 뜹니다.
내가 한 Commit들 모두 보기
방금 Commit을 했습니다. 이제는 이전에 한 Commit을 모두 나열해볼 수 있는 git log
명령어에 대해서 알아봅시다.
git log
git log
명령어를 사용하면 Commit들을 모두 출력해볼 수 있습니다. 한번 실행해봅시다.
보시면 방금 Commit한 제 Commit이 보입니다. Author, Date, 메시지까지 모두 출력되는 것을 알 수 있습니다.
git commit
움짤로 보기!
한번 a.txt파일을 수정하고 Commit을 한번 더 해보겠습니다.
1. 비어있는 a.txt 파일을 다음과 같이 수정합니다.
git status
로 파일의 상태를 확인해볼까요?
a.txt 파일을 방금 수정해줬기 때문에 modified되었다고 뜹니다.
2. 이 파일을 Stage합니다.
파일을 상태는?
수정된 a.txt파일이 Commit될 파일이라고 뜹니다.
3. "a.txt 수정함"이라는 메시지와 함께 Commit합니다
4. git log
명령어로 내 Commit 기록들을 출력해봅니다.
* 위와 같이 아래에 :
이 뜨면 "q"를 입력해서 나가거나 키보드 키로 위 아래로 이동하면서 텍스트를 확인할 수 있습니다.
제가 한 두 Commit들을 모두 확인할 수 있습니다.
Commit을 할때 Message 치로 넘어가는 부분 생략하기
엄청 긴 문장도 아니고 한 줄 정도로 간단한 Message만 남길 때 vi 에디터로 넘어가서 메시지를 남기기는 귀찮습니다. 이때는-m
또는--message
옵션으로 vi로 넘어가서 메시지를 작성해주는 부분을 생략할 수 있습니다.
git commit -m "여기에 commit 메시지 입력"
한번 b.txt를 생성하고 vi 에디터로 넘어가지 않고 위 명령어로 바로 메시지와 함께 Commit을 해봅시다.
먼저 b.txt 파일을 생성했습니다.
그 다음 그 파일을 Stage하고 vi 에디터로 넘어가지 않고 -m
옵션으로 메시지를 남기며 Commit했습니다.
git commit -m "메시지"
움짤로 보기!
한번 c.txt파일을 touch
명령어로 생성하고 Commit하는 것을 움짤로 보여드리겠습니다.
댓글
이 글 공유하기
다른 글
-
Git과 GitHub를 사용하기 전에 알아야 할 개념들 :: Remote, Push, Pull, Clone
Git과 GitHub를 사용하기 전에 알아야 할 개념들 :: Remote, Push, Pull, Clone
2020.07.18 -
Stage it! Commit할 파일을 선택해보자 :: git add [파일명]
Stage it! Commit할 파일을 선택해보자 :: git add [파일명]
2020.07.07 -
Commit하기 위해 필요한 Git 설정하기 :: git config (system vs global vs local)
Commit하기 위해 필요한 Git 설정하기 :: git config (system vs global vs local)
2020.07.06 -
저장소 안의 파일들의 상태를 확인해보자 :: git status
저장소 안의 파일들의 상태를 확인해보자 :: git status
2020.07.06