본문 바로가기
프로그래밍/Git & Github

2021년 7월 24일 - Git 사용법 (1)

by 철제백조 2021. 7. 24.

 

● 본 공부와 기록은 유튜버 '얄팍한 코딩사전' 님의 "가장 쉬운 Git 강좌 - (상) 혼자작업편"을 기본으로 하였다.

 https://www.youtube.com/watch?v=FXDjmsiv8fI

 

☆ Git이란?

 Git은 폴더 안에 자신이 작업한 소스 코드 등을 시간여행이 가능한 평행 우주들을 만드는 것이다. 시간 여행이 가능하다는 것은 수습하기 어려운 실수를 했거나, 전과 무엇이 바뀌었는지 햇갈릴 때 언제든 폴더 내 상태를 과거로 되돌릴 수 있다. 모든 파일들의 저장된 상태를 엊그제, 초기 등의 시점으로 돌려놓을 수 있다. 혹은 과거로 돌아가서 필요한 것만 챙겨서 현재나 다른 과거로 가져올 수도 있다. 전처럼 폴더를 매번 나누어 시점 별로 저장해놓을 필요가 없어진다.

 

평행 우주를 만든다는 것은 특정 작업을 실행하는 중, 실험적인 시도를 해보고 싶거나 다른 버전으로 작업을 하고 싶을 때 Git이 없다면 폴더를 통째로 복사하는 수고를 감수해야 한다. Git은 폴더 안에 여러 평행 우주들을 생성해서 각 버전들을(우주들을) 넘나들며 작업하다가 저쪽에서 작업하던 실험적 기능이 마음에 들면 이쪽 우주로 가져오는 등의 작업을 할 수 있다.

 


 

☆ Git 사용법 종류

 Git 사용법으로는  Command line Interface로 명령어를 입력하는 것과,  마우스로 쓸 수 있게 GUI로 만들어진 소프트웨어, Source Tree를 쓰는 것 이 두가지로 나눌 수 있다. 프로그래머라면 CLI에 익숙해져야 하겠지만, 초보에게는 부담스럽기도하고, 소스트리로 할 수 있는 편리한 기능도 있으니 본 정리에서는 위의 강의를 토대로 두 가지 방법을 병행하며 정리하였다.

 


 

☆ Git 준비물

➀ Git

 https://git-scm.com/

 

Git

 

git-scm.com

➁ IDE

 코딩할 때 쓰이는 프로그램들로, 대표적으로 IntelliJ나 Android Studio, Atom 등이 포함된다.

→ 편의를 위해서 이 정리에서는 Visual Studio Code를 사용한다.

 https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

➂ SourceTree

 마우스로 깃을 다루게 해주는 프로그램이다.

 https://www.sourcetreeapp.com/

 

Sourcetree | Free Git GUI for Mac and Windows

A Git GUI that offers a visual representation of your repositories. Sourcetree is a free Git client for Windows and Mac.

www.sourcetreeapp.com

 


 

☆ Git 사용법과 예제

 원하는 위치에 프로젝트를 진행할 폴더를 만든다.

 

 이 폴더를 VS Code를 실행한 다음, File - Open Folder - 생성한 폴더 선택한다.

 

→ 정상적으로 실행될 경우, 아래와 같은 화면이 나타난다.

 

→ 왼쪽 탐색기 부분에 프로젝트에 사용되는 파일들이 들어간다.

→ 현재는 빈 폴더이기에 빈창이 나타난다.

 

 새 파일을 클릭해 파일을 만든다.

 

→ 'cat'이라는 파일을 만들고 내용에 'name: Tom'을 만들고, 마찬가지로 'mouse'라는 파일을 만들고 내용에 'name: Jerry'로 한 후 저장한다.

 

 

'cat' & 'mouse' 파일 생성

→ 여기서 다시 git-practice 폴더로 돌아오면, 생성된 파일들이 아래와 같은 형식으로 존재하는 것을 확인할 수 있다.

 

 

 이 파일들을 Git이 관리하도록 만든다. 시간여행이 되는 평행우주를 만드는 작업이다.

 

Ⓐ CLI - VS Code로 하는 방법

 'Ctrl + `(역따옴표)'를 동시에 누르면, 하단에 터미널이 열리게 된다.

 

→ 이제 저 창에 여러가지 명령어들을 입력할 것이다.

→ git init 명령어를 입력해보자.

 

→ 빈 Git 저장소가 만들어졌다는 메시지가 출력된다. 폴더에 생성된 파일들이 Git의 관리 아래 들어갔음을 의미한다.

 git config --global user.name "(내 이름)" git config --global user.email "(내 메일주소)"를 입력해서 내 이름과 이메일을 등록해보자.

 

→ 이 작업을 완료한 후, 폴더에 숨긴 파일까지 보이도록 조작할 경우, 아래와 같이 .git 폴더가 생긴 것을 확인할 수 있다.

 

 

Ⓑ SourceTree로 하는 방법

→ SourceTree 실행후, 상단의 Create - 탐색 - 만든 폴더를 선택 - 생성하면 아래와 같은 화면이 출력된다.

 

→ 이렇게 생성해도 마찬가지로 폴더에 숨김 폴더로 .git이 생성된 것을 볼 수 있다.

→ 이름과 이메일은 SourceTree 설치 시 생성했으므로 별도 입력하지 않아도 괜찮다.

 

⑤ 현재 시점을 저장한다.

→ 이 파일들을 타임캡슐에 묻는 작업을 진행한다. 미래에서 언제든 이 시점으로 돌아올 수 있도록 말이다.

 

Ⓐ CLI - VS Code로 하는 방법

→ 명령어 창에 git status를 입력한다. 그러면 아직 담기지 않은 파일들이 붉은 색으로 표기된다. 저 붉은 항목들은 정확히 말해 저 파일들 자체를 나타내는 것이 아니라, '해당 파일들이 만들어졌다는 사실들'이다.

 

→ 캡슐에 담을 준비를 하도록 하자. git add -A을 입력한다. 이곳의 모든 것을 git의 타임캡슐에 넣는다는 뜻이다. 그리고 다시 git status를 입력하면 생성된 파일들이 푸른색으로 바뀐 것을 볼 수 있다. 이건 캡슐에 묻을 것들을 준비했다는 뜻이로 이해하면 쉽다.

 

→ 이제 묻어보도록 하자. git commit -m "(설명)"을 입력하자. 캡슐에 담은 뒤, 이걸 묻는 작업이다. 여기서는 git commit -m "First Commit"이라고 입력하였다.

 

→ 여기서 다시 git status를 입력하면 묻을 게 없다고 나온다. 이미 전부 묻어버렸기 때문이다.

 

→ 현재 진행상황은 아래와 같다.

 

Ⓑ SourceTree로 하는 방법

→ SourceTree에서 타임캡슐을 묻는 것은 아래에 있는 파일들을 위로 스테이지(캡슐을 묻는 전문 용어)해주면 된다. 구체적인 사용 첨부 사진은 추후 설명하기로 하고, 만약 위의 과정을 거친 후, SourceTree를 살펴보면 아래와 같이 나타난다.

 

→ 커밋할 내용이 없는 것은 우리가 앞서 VS Code로 전부 묻어버렸기 때문이다.

→ VS Code를 통해 dog 파일과 내용은 name: snoopy를 입력했다. 저장 후, SourceTree를 보면 아래와 같이 바로 표시되는 걸 볼 수 있다.

 

 

 

사진 설명을 입력하세요.

→ 이후, dog 파일 옆에 + 버튼을 눌러 스테이지하고, 아래에 설명을 적은 뒤, 우측 하단의 커밋 버튼을 누르면 정상적으로 commit이 완료된다.

 

→ 현재의 진행상황은 아래와 같다.

 

 변화를 줘보자.

→ cat 파일은 삭제

→ mouse 파일의 name은 micky로 변경

→ penguin 파일 생성 후, 내용을 name: pororo로 입력

→ 터미널에서 git status로 상태를 확인해보자.

 

→ penguin이 생성된 사실 뿐만 아니라, cat이 삭제되고, mouse가 변경되었다는 사실까지 타임캡슐에 넣을 목록으로 전부 나와있다.

→ SourceTree에서도 아래와 같이 확인이 가능하다.

→ 이 변화들 역시 같은 방식으로 설명을 적어 SourceTree를 통해 스테이지해보도록 하자.

 

→ 다시 VS Code로 돌아와 git log를 입력한다. 그럼 아래와 같이 캡슐의 정보들과 메시지들이 출력된다.

 

 git log 입력 후에 입력이 안되는 경우, 'q + ;(콜룬)'을 눌러 빠져나오면 된다.

→ SourceTree에서는 History 텝을 통해 더 시원하게 확인이 가능하다. 각각 캡슐들을 클릭하면 무엇이 어떻게 바뀌었는지 까지 전부 확인이 가능하다.

→ 현재 진행상황은 다음과 같다.

 과거로 돌아가자.

→ 이전에 묻었던 캡슐을 파내어 과거로 돌아가보자. 과감한 방법과 신중한 방법이 존재한다.

 

㉠ 과감한 방법

Ⓐ CLI - VS Code로 하는 방법

→ 돌아갈 과거 이후 행적은 복원할 여지없이 완전히 지우겠다는 것이다.

→ 돌아가고 싶은 시점의 번호 맨 앞 6자리를 복사한다.

 

 git reset (번호 6자리) --hard를 입력한다. 본 예제에서는 git reset 6f5c55 --hard와 같이 입력했다.

→ 변화를 살펴보면, 지웠던 cat이 다시 생겼고 penguin은 사라졌으며, mouse의 이름이 본래대로 돌아온 것을 확인할 수 있다.

 

 

Ⓑ SourceTree로 하는 방법

→ 위의 예제에 다시 변화를 준 뒤, 이번엔 SourceTree에서 실습해보도록 하자.

→ 원하는 위치에 마우스 오른쪽 클릭을 한 후, '이 커밋까지 현재 브랜치를 초기화' 버튼을 누르고 옵션에서 Hard-나오는 팝업창에 Yes를 클릭해준다.

 

 작업을 수행할 경우, History에 회귀 시점 이후가 전부 사라진 것을 볼 수 있다.

 

 이런 파괴적인 방법들은 다시 원하는 미래 시점을 돌아갈 수 없다는 단점이 있다.

 

㉡ 신중한 방법

Ⓐ CLI - VS Code로 하는 방법

→ reset이 아닌, revert를 쓰는 방법이다.

→ 마찬가지로 git log로 일련번호를 확인한다. 이번엔 돌아갈 시점이 아니라 취소할 시점을 찾는다. 역시 앞의 6자리를 고른다.

 git revert 6자리를 입력한다.

 

 새 Commit 메시지를 작성하는 화면이 나온다.

 그대로 저장하겠다는 명령어 :wq를 입력하면 리셋 시점과 마찬가지로 파일들이 과거 상태로 돌아온 것을 알 수 있다. 그러나 log를 확인해보면 reset처럼 사라진 것이 아니라 새로운 캡슐이 묻힌 것을 확인할 수 있다.

 

 그렇기에 reset으로 다시 미래로 돌아갈 수 있다.

 

 

Ⓑ SourceTree로 하는 방법

 SourceTree에서 revert를 하기 위해서는 취소할 시점에서 우클릭-커밋 되돌리기를 선택하면 된다.

 

 

이후, branch는 다음에 이어가도록 하겠다.

 

댓글