개념정리 - Git ( Solo project )

Seungmin Shin·2021년 8월 10일
1

코딩 개념정리

목록 보기
33/33
post-thumbnail

git으로 무엇을 할 수 있을까?

우리가 작업을 할때, 하나의 디렉토리 (폴더) 를 정해 작업을하고 그 작업물을
해당 폴더안에 저장을 하며 작업을 진행해 나갑니다.

git 은 이 폴더안에 하나의 평행우주같은 공간을 만들어서 우리가 다른 차원에서
똑같은 프로젝트를 진행할 수 있게 해줍니다, 그리고 그 결과물을 이리저리로 옮길 수 도 있게 하죠.

예를들어, 수습하기 어려운 실수를 저질렀거나, 내가 수정한게 무엇이었는지 기억이 나지 않을때,
언제든지 그 문제가 발생하기 이전의 상태로 되돌릴 수 있다는 것입니다.

ctrl + z 의 수준이 아니라 모든 파일의 저장상태를 시기별로 되돌릴 수 있는겁니다.
어제, 엊그제, 아니면 맨 처음단계로.

아니면 과거 작업으로 돌아가서 필요한것만 챙기고, 다시 현재로 가지고 돌아올 수 도 있는것이죠.

예전에는 매 시점별로 작업물을 압축해서 따로 저장을 해두었지만, git 을 사용한다면
이러한 번거로운 작업을 매번 하지 않아도 되는것입니다.

이 git 은 언제 이용을 할까요? 예를 들면, 우리 팀이 진행하고 있는 프로젝트가 있는데
굉장히 도전적인 실험을 해보고싶은 욕구가 생깁니다, 하지만 자칫하면 프로젝트를 망칠 수도 있기때문에
git이 만들어낸 또다른 평행우주에서 따로 실험을 하는겁니다, 이 실험은 본 프로젝트에는
영향을 끼치지 않죠. 그런데 다른곳에서 진행하던 실험의 결과가 마음에 든다면
다시 본 프로젝트로 가져와 적용을 해볼 수 도 있습니다.

이제 이 git을 이용하는 법을 알아보겠습니다.
이번 개념정리는 혼자 작업시에 사용하는 방식을 정리했습니다.

git 사용법 - CLI

git을 사용하는 방법에는 두가지가 있습니다. 터미널 (CLI) 을 이용하는 방법과 소스트리 (GUI) 를
이용하는 방법이죠, 개발자라면 CLI 에 익숙해져야겠지만 소스트리 사용법도 간단하게는 익혀두는것이
좋을 것 같습니다. 확실히 편리하긴 하기 때문이죠. 먼저 CLI를 보겠습니다.

일단 시작하기전에 우리 컴퓨터에는 총 세가지가 설치되있어야 합니다.
설치방법은 따로 올리지 않습니다, 구글에 검색해보면 설치방법이 자세히 나와있습니다.

  1. git
  2. Visual Studio Code
  3. Source tree (GUI 용)

설치가 다 끝났다면, 이제 본격적으로 시작해 보겠습니다.

먼저 vscode 를 열어서 폴더를 만들고, 파일을 만들어보겠습니다.

일단 git_study 라는 폴더를 만들었습니다. 그리고 그 폴더안에 cat과 dog라는 파일을 만들고 그 파일에
각각 이름을 tom 과 snoopy 로 정한 내용을 추가해주겠습니다.

이제 이 git_study 폴더를 git이 관리하게 만들어보겠습니다. 평행우주를 만드는것이지요.

터미널에서 해당 디렉토리로 이동합니다. 그리고 git init 을 입력해주겠습니다.

뭐시기뭐시기 하면서 마지막에 빈 git 저장소가 만들어졌다는 메세지가 뜹니다.
이 폴더가 git의 관리 하에 들어간것입니다.

그리고 이 git 에 사용자의 이름과 메일주소를 입력해야하는데 git config user.name 을 입력해서
본인의 git nickname이 나온다면 이미 저장이 됬기때문에 굳이 저장할 필요는 없습니다.

그러나 나오지 않는다면, git config --global user.name "user_name"
git config --global user.email "user_email" 을 입력해서 닉네임과 이메일을 추가합니다.

자 이제 git 저장소도 생겼고, 이를 제어하는데 필요한 사용자의 정보도 입력이 되었습니다.

이제 우리가 할것은 현재 우리가 만든 폴더에 저장되있는 두개의 파일이 존재하는
지금 이 순간을 하나의 타임 캡슐에 묻어두겠습니다. 미래에서도 언제든 이 시점으로 되돌아올 수 있게 말이죠.

타임캡슐을 묻으려면 일단 정보들을 타임캡슐에 담아야 하겠죠? 무엇을 담아야 할지 git의 입장에서 보겠습니다.

현재 디렉토리 안에서 git status 를 입력해보겠습니다.

빨간색 글씨로 아직 담기지 않은 파일들이 보입니다. Untracked, 아직 git에서 추적하지 않는다는 뜻입니다.

이제 이 빨간색 파일들을 담아보겠습니다, git add -A 를 입력해보겠습니다.
폴더의 모든것을 캡슐에 넣는다는 의미입니다.

별다른 메세지 없이 돌아왔네요? 상태를 확인하기 위해 git status 를 다시한번 입력해 보겠습니다.

아까와는 다르게 뭔가 초록한 파일들로 변화가 됬습니다, 그리고 Change to be committed,
'타임캡슐에 묻을 수 있는것들' 이라고 알면 되겠습니다. 그럼 이제 묻어주겠습니다.
commit 이란 명령어를 사용합니다. git commit -m "설명" 을 입력합니다. 뒤쪽의 설명은
나중에라도 알아보기 쉽게 간략한 설명을 적어놓는겁니다, 일단 git commit -m "First commit"
이라고 적겠습니다. 그리고 결과를 보겠습니다.

자 이렇게 첫번째 타입캡슐이 묻혔습니다.

다시 git status 를 입력해보면

묻을것 (commit) 이 없다고 나옵니다. 이제 새 파일을 하나 더 만들어보겠습니다.
mouse 라는 파일에 name은 jerry 라는 내용을 넣어주었습니다.

이 파일도 아까와 동일한 방식으로 add 하고 commit 해보겠습니다, 과정은 생략합니다.

자 이렇게 addcommit 을 거쳐 또 새로운 타임캡슐을 묻었습니다.

이번에는 조금 더 변화를 줘보겠습니다, dog 파일은 지우고, mouse의 name은 mickey 로 합니다.
그리고 penguin 이란 파일을 만들어 name은 pororo 로 하겠습니다. 작성하고 꼭 저장하세요.

변경이 완료됬습니다. 이제 다시 터미널을 열어서 git status 로 상태를 보겠습니다.

또 무언가 많은 변화가 일어났습니다, dog는 삭제 되었고, mouse는 묻힐 준비가 되었고.
penguin은 아직 추적하지 않는 중이라고 하네요. addcommit 으로 전부 묻어버리겠습니다.

commit 까지 끝났다면, 지금까지 묻은 캡슐목록을 확인해보겠습니다, git log 를 입력해보세요.

이런식으로 우리가 타임캡슐을 묻었던 (commit 했던) 기록들이 나옵니다.
이제 과거로 돌아가볼텐데, 이 목록들을 참고해야 합니다, 일단 나갑니다. ;q 를 입력하면 나와집니다.

과거로 돌아가는 방법에는 두가지 방법이 있습니다, "과감한 방법""신중한 방법" 입니다.

과감한방법은, 돌아가게 되는 과거 이후에 모든 기록은 사라집니다. 예를 들어 우리가 두번째 mouse를 묻던
시점으로 돌아간다면, 그 후에 했던 penguin을 묻던 시점은 삭제가 되는것이죠. 한번 해보겠습니다.

mouse를 추가한 두번째 캡슐로 과감하게 돌아가보겠습니다, 여기서 필요한건 저 노란색 코드입니다.
앞에서부터 6자리만 필요하니 따로 복사를 해두겠습니다. 그리고 빠져나와 git reset 000000 --hard
라고 입력해보겠습니다.

그러면 이런 메세지가 뜹니다, 이제 vscode 로 넘어가보면

최근에 추가했던 penguin 은 사라지고 mouse가 추가되던 그 시점으로 되돌아 왔습니다.
삭제했던 dog 도 돌아왔고, mouse의 이름도 다시 jerry 가 되었네요. git log 를 입력해 봅시다.

penguin 타임캡슐이 없어진걸 볼 수 있습니다. 이것이 바로 과거로 가는 과감한 방법입니다.

다시 아까 penguin 을 추가했던 상태로 되돌아가봅시다, 과감한방법으로 모두 지워졌기 때문에
처음부터 다시 작성해서 add, commit 합니다.

이번에는 조금 신중한 방법으로 가보겠습니다. git log 로 돌아갈 시점이 아닌, 취소할 시점을 찾겠습니다.
가장 먼저번 캡슐 add penguin 을 선택해주겠습니다.

이번엔 git revert 000000 을 입력합니다. 그리고 어떤 창이 뜨는지 확인하겠습니다.

이런 에디터 창이 뜰겁니다, 따로 수정없이 그대로 저장하고 나가겠습니다.
ctrl + x -> y -> enter 순으로 입력하면 저장후 나가기게 될것입니다.
그리고 git log 로 캡슐의 내역들을 확인해 보겠습니다.

아까와는 다르게 선택한 시점 이후가 삭제된게 아니라 그 뒤에 새 캡슐이 묻힌것을 확인할 수 있습니다.
이런식으로 우리는 과거와 현재를 왔다갔다 할 수 있게 되었습니다.

git branch

우리가 위에서 연습삼아 만들었던 파일을 회사에서 진행하고 있는 프로젝트라고 생각해 봅시다.
이 프로젝트를 진행중에 내가 한번 도전해보고 싶은 작업이 생겼습니다. 하지만 그렇다고 해서
회사파일을 함부로 변경할 순 없겠죠? 이때 branch 를 사용하여 하나의 평행우주를 만듭니다.

현재 폴더에서 git branch my-idea 라고 입력을 해봅시다.
branch 는 '가지' 라는 뜻입니다, 현재 시점에서 가지처러 뻗어 또다른 시점으로 분기하겠다는 의미입니다.
다시 git branch 를 입력해 봅시다.

이렇게 두가지의 평행우주가 생겨나게 되었습니다, 여기서 위에 있는 master 가 본 프로젝트 이고.
my-idea 가 아까 만든 또 다른 프로젝트가 됩니다. 현재는 master에 연결이 되있네요.
my-idea 로 넘어가보겠습니다, git checkout my-idea 를 입력하겠습니다.
그리고 git branch 를 입력하면,

이렇게 my-idea 가 선택된것을 확인할 수 있습니다. 이렇게 한 후 vscode 로 넘어가 볼까요?
별다른 변화가 없습니다, 왜냐하면 원 branch의 상태를 그대로 가져오기 때문입니다.

이제 이 곳에서 나만의 작업을 해보겠습니다. mouse 를 삭제하고 horse 를 데려와서 이름을 bolt 라고
지어주겠습니다. 그리고 add, commit 으로 캡슐에 넣고 묻어주겠습니다.

이렇게 한창 작업하고 있는데 상사가 들어와서 현재 우리팀의 작업파일을 보고자 합니다.
지금 이 파일을 보여줄 순 없죠, 다시 원래 브런치로 돌아가주겠습니다.
git checkout master 를 입력해 주겠습니다.

감쪽같이 이전상태로 돌아온것을 확인할 수 있을겁니다. 이렇게 왔다갔다가 가능합니다.
가끔 혼동이 올 수 있으니 현재 자신이 어디에 있는지 꼭 확인하고 작업하시길 바랍니다.

여기서 또 하나의 작업이 가능합니다, 바로 내가 따로 브런치해서 만든 코드를 master 로 가져오는것입니다.

master 로 와서 아까 내가 만든 my-idea 에 있는 코드를 가져오겠습니다.
일단 master branch 로 이동합니다. 이동 하셨나요? 그 다음 git merge my-idea 를 입력합니다.

그러면 이렇게 내가 my-idea 에서 수정한 내용이 master 로 오게 됩니다.

이런식으로 간단하게 git 을 만져봤습니다.

저도 지금 공부하면서 쓰는 중이라 완벽하지 않은데, 더 공부해서 수정에 수정을 거쳐서 다시 완성시킬겁니다.
아하하핳

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

profile
Frontend Developer

0개의 댓글