본문 바로가기

Project Management/Git & Github

[Chapter 1] github 처음 사용해보기(2) - commit, github 연동

github logo image

 

 

 

○ 기본 github 계정 연동

 

앞선 아티클에서 우리는 "로컬 저장소"로 사용할 폴더를 하나 생성했고(비어있는 상태), 거기서 git init을 통해 기본적인 git 사용 상태로 만들어 두었습니다. [.git]이 생성되었다는 의미죠? 우선 이 상태에서, github.com에서 생성한 계정과 user name을 미리 연동해 보겠습니다. git bash를 통해 해당 폴더에서 git을 실행하고, 터미널에서 다음과 같이 입력해 줍니다. 

 

$git config —global user.email "github 계정 이메일"
$git config —global user.name "github username"

 

위 큰따옴표 사이에 이메일주소와 유저 네임을 작성하고 입력해 줍니다. 완료한다고 하더라도 별도의 메시지는 출력되지 않습니다. 참고해 주세요. 여기까지 완료했다면, 우선 github와는 무관하게, 로컬의 git에서 commit과 checkout을 간단히 체험해 보겠습니다.

 

 


 

 

○ commit과 checkout 체험해보기

 

일단 비어있는 폴더(정확히는 [.git] 폴더가 숨겨져 있는)에 새로운 텍스트 파일 하나를 생성해 보겠습니다. [readme.txt]라는 파일을 하나 생성하고, HELLO WORLD!라는 한 줄짜리 텍스트를 넣고 저장합니다. 

 

readme.txt를 생성했습니다

 

 

이제 이 파일을 git으로 commit 해 보겠습니다. "내가 새로운 파일을 만들어서 내용을 작성했어."라는 버전 정보를 남기는 개념이죠. git bash를 실행해 터미널에서 다음과 같이 작성해 보겠습니다. 

 

$ git add readme.txt

$ git commit -m "설명파일 최초 생성"
[master (root-commit) ab99b34] 설명파일 최초 생성
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

 

위와 같은 메시지가 출력되며, 최초의 commit이 완성되었습니다. 축하합니다! 자, 이제 지체하지 말고 다음으로 넘어가겠습니다. 이번에는 이 상태에서 아까 만들어놓은 readme.txt 파일을 수정해 보겠습니다. 간단하게 "update"라는 텍스트를 한 줄 추가해 보겠습니다. 

 

update라는 텍스트를 추가했습니다

 

 

 

해당 문서를 저장하고 나서, 다시 git bash로 돌아와 위의 커맨드를 다시 한번 실행해 줍니다. 파일에 새로운 변화가 생겼으니 다시 한 번 add해 주고 commit을 실행하며 "업데이트 추가" 정도로 기록을 남겨 두겠습니다. 

 

$ git add readme.txt

$ git commit -m "업데이트 추가"
[master 4f669fc] 업데이트 추가
 1 file changed, 2 insertions(+), 1 deletion(-)

 

 

이제 우리는 총 두 번의 commit을 생성했습니다. 로그를 통해 한 번 살펴보겠습니다. git log를 입력해 볼까요?

 

$ git log
commit 4f669fcc1da235002c79ce68cbe075308d846e22 (HEAD -> master)
Author: ________
Date:   ________

    업데이트 추가

commit ab99b34590522dd120d8bf4941661127eba54183
Author: ________
Date:   ________

    설명파일 최초 생성

 

위와 같이 두 개의 버전이 확인됩니다. 아래에서부터 설명파일 추가, 업데이트 추가라고 -m(message)를 통해 기록한 내용도 확인됩니다. 

 

이제 우리는 checkout을 통해, 버전을 다시 되돌리려고 합니다. 여기서 필요한 것은 우리가 되돌리려고 하는 버전의 commit ID입니다. 우리는 '설명파일 최초 생성' 버전으로 다시 되돌리려고 하니 여기서는 [ab99b34...]가 되겠습니다. 참고로 버전을 되돌릴 때 커밋 아이디는 앞의 7자리만 입력해도 동작이 가능합니다. 이제 다시 터미널 화면에서 아래와 같이 입력해 보겠습니다. 

 

$ git checkout ab99b34
Note: switching to 'ab99b34'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at ab99b34 설명파일 최초 생성

 

완료된 이후, 폴더에 있는 readme.txt를 확인해 보겠습니다. 놀랍게도! 파일을 직접 수정하지 않았는데도 텍스트 파일이 원상복구 되어있는 것을 확인할 수 있습니다.

 

최초로 커밋한 상태로 복구되었습니다

 

 

이 상태에서 다시 최신의 상태, 즉 update라는 텍스트가 추가된 버전으로 다시 되돌아가보겠습니다. 아까와 방법은 동일한데, 커밋 아이디를 직접 적을 필요 없이 '-'를 통해서도 최신버전으로 이동이 가능합니다. 

 

$ git checkout -
Previous HEAD position was ab99b34 설명파일 최초 생성
Switched to branch 'master'

 

다시 원상복구 완료!

 

이 상태에서 다시 readme.txt를 열어보겠습니다. 최신버전으로 역시 되돌아와 있습니다. 이런 식으로 커밋을 진행한다면 언제든 원하는 시점으로 파일의 상태를 되돌릴 수 있음을 확인했습니다. 이를 '체크아웃한다'로 표현합니다.