본문 바로가기

Git

[Git] 커밋 파헤치기1- 커밋 해보기

반응형

이번 시간에서는 커밋에 대해 다뤄보겠습니다. 커밋은 저장과 같습니다. 커밋을 하지 않으면 버전 저장이 되지 않습니다. 현재 워킹 디렉터리에서 커밋을 처음 하는거라면 이름과 이메일을 설정해줘야 합니다. 컴퓨터도 누가 어떤 커밋을 했는지 알아야하거든요. 커밋을 하기 위해 이름 및 이메일 설정을 해봅시다. git bash 터미널에서 아래와 같은 명령어를 입력해주세요. 본인의 이름과 이메일을 적으면 됩니다.

 

git config user.name "이름"
git config user.email "이메일"

자, 그러면 코드 수정을 하고 커밋을 해보겠습니다. 코드 수정을 아래와 같이 했습니다.

이제 git bash 터미널에서 커밋을 해보겠습니다. 커밋을 하기 전에 staging area로 이동시켜줘야겠죠? 'git add 파일명'을 깜빡하시면 안됩니다. 커밋을 하는 방법에는 두 가지가 있습니다. 첫 번째 방법은 -m 을 이용해서 하는 방법입니다. -m 뒤에는 커밋 제목을 적을 수 있습니다. 명령어는 ' git commit -m "제목" '입니다.

 

그런데 제목 외에 다른 내용을 더 적고싶다면 어떡할까요? 커밋을 하는 두 번째 방법이 이 문제를 해결해줍니다. 기존 코드에 print(4)를 추가해주고 다시 커밋을 해보겠습니다. 명령어는 'git commit'입니다. git commit을 치면 아래와 같이 뜰겁니다. 내용을 읽어보면 '커밋 메시지를 입력하라. #으로 시작하는 내용들은 무시될 것이다~~' 라고 적혀있습니다. i 를 누르면 입력 모드로 바뀝니다.

 

 

입력 하고싶은 내용들을 적어주시고 다 적으셨다면 Esc + : + w + q를 치면 나오실 수 있습니다. 참고로 이는 vim 언어입니다. 'w + q'는 'write + quit' 라는 뜻입니다. 만약 변경사항이 없으면 그냥 'q'만 치시면 됩니다.  

 

 

이때까지 한 커밋들을 '커밋 히스토리'라고 하는데요, 커밋 히스토리를 한번 보겠습니다. 명령어는 git log 입니다.

 

 

위에 있는 커밋이 최신 커밋입니다. 각 커밋 옆에 있는 긴 문자열은 커밋 아이디입니다. 커밋들을 구분하기 위한 고유 ID인 셈이죠. 커밋 헤시라고도 합니다. 커밋 내용들을 깔끔하게 보고 싶다면 pretty 명령어를 쓰면 됩니다.

git log --pretty=oneline 명령어를 쳐보시면 커밋 내용들이 이쁘게 정리되어 나옵니다.

 

 

총 세 개의 커밋이 있는 것을 보실 수 있습니다. 특정 커밋의 내용을 보려면 'git show 해시아이디' 명령어를 치면 됩니다. 해시 아이디는 앞 네 글자만 사용합니다. 저는 가장 최근 커밋을 한번 살펴보겠습니다. 해시 아이디는 e5c9네요.

 

여기서 --- 기호가 붙은 것들이 해당 커밋 이전의 내용들이고, +++ 기호가 붙은 것들이 해당 커밋의 내용입니다. 이전 커밋에서는 print(2), print(3)을 추가했고, 이번 커밋에서는 print(4)를 추가한 것을 볼 수 있습니다.

완료된 커밋을 수정하려면 어떻게 해야 할까요? 최신 커밋의 수정은 amend 명령어로 할 수 있습니다. 최신 커밋을 수정하기 위해 먼저 원래 코드에서 수정할 부분을 수정해주시고 저장해주세요. 저는 기존의 print(4)를 print(5)로 바꿔보겠습니다. git bash 터미널에 ' git commit --amend' 명령어를 입력하면 기존의 커밋 메시지를 수정할 수 있습니다. 알맞게 수정한 뒤에 Esc + : + w + q 로 나가주세요!

 

 

다시 커밋 히스토리를 보면 최신 커밋이 바뀐 것을 보실 수 있습니다. 잘 보시면 최신 커밋의 해시 아이디도 바뀐 것을 볼 수 있습니다.

 

그런데 쓰다보니깐 git log --pretty=oneline을 치기가 너무 귀찮습니다. 깃은 별칭 기능을 제공하기 때문에 긴 명령어를 다른 단어로 대체할 수 있습니다. --pretty=oneline을 history라는 별칭으로 지정해보겠습니다. 명령어는 git config alias.history 'log --pretty=oneline' 입니다. 별칭 지정 후에 log history를 입력해보세요.

 

 

훨씬 간편해졌네요!

 

두 커밋 사이의 변화를 보고 싶으면 diff 명령어를 사용하면 됩니다. 명령어는 아래와 같습니다.

$ git diff 해시아이디1 해시아이디2

저는 첫 번째 커밋과 마지막 커밋을 비교해보겠습니다.

 

아까 show 했을때랑 모습이 똑같죠? 읽는 방법도 똑같습니다. - 부분이 이전 커밋, + 부분이 이후 커밋입니다.

 
반응형