이 영역을 누르면 첫 페이지로 이동
Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

페이지 맨 위로 올라가기

Coding Groot

코딩 블로그

변경한 파일을 저장해보자 :: git commit

  • 2020.07.13 16:45
  • Git/Git Tutorial
글 작성자: Coding Groot

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 저장소를 만듭니다.

git init

2. a.txt라는 새로운 파일을 만들어봅시다.

a.txt 생성

git status 명령어로 현 저장소의 상태를 확인해볼까요?

git stage

a.txt라는 파일이 새로 들어왔다는 것을 알 수 있습니다.

3. Commit을 하기 위해서 Commit할 파일을 Stage해야한다고 했습니다.
a.txt 파일을 Stage해봅시다.

git add a.txt

git add 명령어로 a.txt 파일을 Stage했습니다. 이제부터 a.txt는 Commit될 파일이되고 Git에 의해서 관리(Tracked)됩니다.

git status 명령어로 a.txt의 상태가 어떻게 변했는지 확인해볼까요?

git status로 a.txt 상태 확인 

a.txt 파일이 초록색으로 나오며 Commit될 파일이라고 표시되는 것을 확인할 수 있습니다.

4. 실제로 Stage한 a.txt 파일을 기록하기 위해 git commit 명령어를 실행합니다.

git commit 명령어를 실행하면 뜨는 창

git commit 명령어를 실행하면 메시지를 남기는 창으로 이동합니다. 위의 창은 vi 에디터 창입니다. Window 메모장이나 Visual Studio Code처럼 텍스트 에디터입니다. 처음에 접하시는 분들은 어려울 수 있습니다. git-bash는 기본적으로 vi 에디터로 설정되어 있습니다. vi를 모르신다면 유튜브 vi 사용법 영상 하나를 보고 오시는 것을 추천합니다. 일단 실습을 진행해야 하니 간단히 설명해드리겠습니다.

vi에서 글을 적으려면 삽입(Insert) 모드로 전환해야 합니다. vi는 그것을 "i"를 침으로써 진입합니다. 한번 i를 쳐보겠습니다.

i 누름

* 만약에 저 모드로 진입이 안 되신다면 ESC 키를 누르고 다시 i를 눌러보세요.

이 상태에서 우리는 메시지를 칠 수 있습니다. 이 Commit은 a.txt를 생성했다는 기록입니다. "a.txt 생성함"이라고 메시지를 치겠습니다.

삽입 모드에서 메시지를 침

지금 우리는 임시적으로 메시지를 쳤고 아직 저장하진 않은 상태입니다. 메시지를 저장하면 삽입모드에서 빠져나와야 합니다. 삽입모드에서 빠져나오려면 ESC 키를 누르면 됩니다. 

ESC 키를 눌러서 삽입모드를 빠져 나옴

삽입모드를 빠져나왔다면 다음과 같이 아래에 "-- 끼워넣기 --" 텍스트가 없어야 합니다.

이 메시지를 저장하기 위해서는 우리는 "저장해라!"라고 명령해야 합니다. 우리는 이와 같이 모드 전환이 아닌 특수한 명령어는 ":"을 먼저 친 후에 적습니다. 저장해라는 명령어로 vi는 Write의 약자인 "w"를 사용합니다. 

따라서 저장하기 위해서는 이 창에서 :w라고 쳐야합니다. 한번 실행해봅시다.

":w"를 침

다음과 같이 아래에 "~~~ 저장 했습니다."라고 뜨면 성공적으로 저장된 것입니다. 이제는 우리가 원하는 메시지를 성공적으로 저장했으니 vi 에디터를 종료하고 다시 Git으로 빠져나가야 합니다. 빠져나가는 명령어로 vi는 Quit의 약자인 "q"를 사용합니다.

모드 전환이 아닌 특수한 명령어이기 때문에 :q라고 쳐야합니다. 한번 실행해봅시다. 

":q"를 치고 성공적으로 vi 에디터를 종료함

그러면 다시 git-bash 창으로 돌아오게 됩니다. 보시면 이 Commit에서 하나의 파일이 바뀌었다고 뜹니다. 

내가 한 Commit들 모두 보기

방금 Commit을 했습니다. 이제는 이전에 한 Commit을 모두 나열해볼 수 있는 git log 명령어에 대해서 알아봅시다.
git log

git log 명령어를 사용하면 Commit들을 모두 출력해볼 수 있습니다. 한번 실행해봅시다.

git log

보시면 방금 Commit한 제 Commit이 보입니다. Author, Date, 메시지까지 모두 출력되는 것을 알 수 있습니다.

git commit 움짤로 보기!

한번 a.txt파일을 수정하고 Commit을 한번 더 해보겠습니다.

1. 비어있는 a.txt 파일을 다음과 같이 수정합니다.

a.txt 수정

git status로 파일의 상태를 확인해볼까요?

git status

a.txt 파일을 방금 수정해줬기 때문에 modified되었다고 뜹니다.

2. 이 파일을 Stage합니다.

git stage a.txt

파일을 상태는? 

git status

수정된 a.txt파일이 Commit될 파일이라고 뜹니다.

3. "a.txt 수정함"이라는 메시지와 함께 Commit합니다

0
commit하는 과정

4. git log 명령어로 내 Commit 기록들을 출력해봅니다.

git log

* 위와 같이 아래에 :이 뜨면 "q"를 입력해서 나가거나 키보드 키로 위 아래로 이동하면서 텍스트를 확인할 수 있습니다.

제가 한 두 Commit들을 모두 확인할 수 있습니다. 

Commit을 할때 Message 치로 넘어가는 부분 생략하기

엄청 긴 문장도 아니고 한 줄 정도로 간단한 Message만 남길 때 vi 에디터로 넘어가서 메시지를 남기기는 귀찮습니다. 이때는 -m 또는 --message 옵션으로 vi로 넘어가서 메시지를 작성해주는 부분을 생략할 수 있습니다.
git commit -m "여기에 commit 메시지 입력"

한번 b.txt를 생성하고 vi 에디터로 넘어가지 않고 위 명령어로 바로 메시지와 함께 Commit을 해봅시다.

먼저 b.txt 파일을 생성했습니다.

b.txt 파일 생성

그 다음 그 파일을 Stage하고 vi 에디터로 넘어가지 않고 -m 옵션으로 메시지를 남기며 Commit했습니다.

git add b.txt; git commit -m "b.txt 생성함";

git commit -m "메시지" 움짤로 보기!

한번 c.txt파일을 touch 명령어로 생성하고 Commit하는 것을 움짤로 보여드리겠습니다.

0
vi 에디터 없이 commit하는 과정

반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 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
다른 글 더 둘러보기

정보

Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

  • Coding Groot의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 소개
  • 블로그 저작권

카테고리

  • 분류 전체보기 (182)
    • Git (23)
      • Git Tutorial (9)
      • Git Note (7)
      • Git Lecture (7)
    • Programming Language (1)
      • C (2)
      • C Sharp (5)
      • Java (4)
      • JavaScript (7)
      • Julia (5)
      • Python (4)
    • Programming (8)
      • Algorithm (2)
      • Compiler (5)
      • Data Structure (0)
      • Web (12)
      • NestJS (2)
    • DevOps, Infra (36)
      • Apple (6)
      • Cloud (15)
      • Database (1)
      • Network (4)
      • Linux (8)
    • Game Programming (11)
      • Unity Tutorial (5)
      • Unity Note (6)
    • Hardware Design (1)
      • Digital Circuit (1)
    • Note (49)
      • Coffee (2)
      • Retrospect (15)
      • Reading List (14)
    • Mathematics (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 한빛미디어
  • Github
  • 서평
  • 회고
  • javascript
  • git
  • aws
  • tutorial
  • 전체 보기…

정보

Coding Groot의 Coding Groot

Coding Groot

Coding Groot

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • GitHub
  • SlideShare
  • 유니티 2020 수업
  • TIL Blog
  • 모도코

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. Copyright © Coding Groot.

티스토리툴바