왜 Git 사용하는가?

혼자 작업하는 것에 집중해서 답변하자면,

여러분이 뭔가를 만들고 프로젝트를 진행하면서 컴퓨터의 특정 폴더에 작업물을 저장해놓는다.

Git은 이 폴더 안에, 시간 여행이 가능한 평행 우주들을 만드는 거라고 생각하면 된다.

시간 여행이 가능하다는 건, 내가 수습하기 어려운 실수를 했거나 전이랑 뭐가 바뀌었는지 헷갈릴 때, 언제든 폴더 내 상태를 과거로 돌릴 수 있다는 것이다.

Ctrl + Z 이런 수준이 아니라 아예 모든 파일들의 저장된 상태를 아까로, 엊그제로, 혹은 아예 맨 처음으로 돌려놓을 수 있다는 것이다. 또는 과거로 돌아가서 필요한 것만 챙겨서 현재나 다른 과거로 가져올 수도 있다.

예전처럼 매번 폴더를 압축해서 시점별로 저장해 둘 필요 없이

평행우주를 만든다는 것이 무슨 말인가

여러분이 뭔가 만들다가 메인 작업에서 해보기에는 위험이 있는 좀 실험적인 시도를 해보거나 고객이 뭘 좋아할지 몰라서 다른 버전으로도 소프트웨어를 작업해보고 싶을 경우,

Git이 없을 때는 폴더 전체를 따로 복사해서 작업해야겠지만

Git은 폴더 안에 여러 평행 우주를 생성해서 여기선 이 버전, 저기선 저 버전 자유자재로 우주들을 넘나들며 작업하다가 저쪽에서 작업하던 실험적 기능이 마음에 들면 이쪽 우주로 가져오고 할 수 있다는 것이다.

이것이 프로그래밍에서 왜 중요한지는 실습하면서 알게 될 것이다.

더 많은 이유들이 있지만 ,, 생략하고

Git 사용법 설명

Command line Interface 로 명령어를 입력하는 것과 마우스로 쓸 수 있게 GUI로 만들어진 소프트웨어 대표적으로 Source Tree를 사용하는 것이 있다.

프로그래머라면 CLI에 익숙해져야 하지만 초보에게는 부담스럽기도 하고 소스트리로 할 수 있는 더 편리한 기능들도 많으니까 이 강의에서는 각 기능들마다 CLI와 Source Tree 둘 다를 사용할 것이다.

준비물

  1. Git
  2. IDE (코딩할 때 쓰는 프로그램) Visual Studio Code 사용

Step1. Git저장소 만들기

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

그리고 이 폴더를 VS code로 연다.

코드 작성 후 저장.

이제 이 폴더를 Git이 관리하도록 만든다.

mac에서 terminal을 열고 폴더 경로로 찾아 들어간다.

좀 더 쉽게는 VS code에서 Ctrl Ctrl Shift ``: 단축키를 이용해 프로그램 하단에 해당 폴더 경로의 terminal 을 열 수 있다.

이 곳에 Git 명령어들을 입력한다.

git init : 빈 Git 저장소를 만든다.

→ 이 폴더가 Git의 관리 하에 들어간 것이다.

git config --global user.name [내 이름] : 이름 등록

git config --global user.email [내 메일주소] : 메일 등록

이제 이 폴더에서 솜겨진 파일까지 보이도록 하면, .git 폴더가 생긴다.

이 폴더 안에 시공간이 저장된다.

소스트리로 하는법

Step2. 현재 시점 저장하기

타임캡슐에 묻으려면, 일단 타임캡슐에 담아야 한다.

담을 게 뭐가 있는지 Git의 눈으로 살펴보자

git status: git

Untracted, git에서 아직 쳐다보지 않는다는 뜻

추적되지 않는 파일 → 캡슐에 담기지 않은 파일, 정확히는 이 파일들이 만들어졌다는 사실을 의미한다.

git add -A: Untracted files 전체를 git의 타임캡슐에 넣는다

다시 git status를 보면 Changes to be committed 로 바뀐다.

묻을 것들 이라고 이해하면 된다.

이제 묻을 준비를 끝냈다.

git commit -m "설명" :

캡슐을 묻을 때는 이게 무슨 캡슐인지 설명을 꽂아놔야 쓸데없는 삽질을 안하겠죠

자 이제 첫번째 타임캡슐을 묻었다.

git status를 보면, 담아서 묻을 게 없다고 나온다.

git push origin master

git log: 묻은 캡슐들을 볼 수 있다.

캡슐의 정보들과 메세지들이 나온다.

→ 기존의 입력 줄이 안 뜨고 글자도 안쳐진다면 vi editor가 실행중인거니까 :q 를 눌러서 빠져나오면 된다.

소스트리에서는 히스토리에서 보다 직관적으로 볼 수 있다.

Step3. 과거의 상태로 돌아가보자,

3.1 과감한 방법 : 과거 이후 행적을 복원할 여지 없이 완전히 지운다.

아까 git log 로 확인한 타임 캡슐 중 돌아가고 싶은 캡슐의 commit 뒤 일련번호 앞 여섯자리를 복사한다.

git reset 일련번호6자리 --hard: 해당 캡슐의 시점으로 이동했다는 메시지와 함께 이동됨.

소스트리에서는, 히스토리> 시점 우클릭 > 이 커밋까지 현재 브랜치를 초기화> 사용중인 모드 옵션을 Hard로 변경> 확인

⇒ 다시 미래 시점으로 가지 못한다.

3.2 과거로 돌아가기 - Revert

미래에 한 발을 걸치고 과거로 가는 방법

reset 대신 revert를 쓴다.

아까 git log 로 확인한 타임 캡슐 중 취소하고 싶은 캡슐의 commit 뒤 일련번호 앞 여섯자리를 복사한다. 가장 최근 거

git revert 일련번호6자리: 새 커밋 메시지를 작성하는 화면이 나온다. 그대로 저장하겠다는 vi명령어 = :wq 를 입력

파일들이 과거 상태로 돌아와 있다.

그런데 로그를 확인해보면 reset처럼 이 시점 이후가 지워진 것이 아니라 이 뒤에 새 캡슐이 묻힌 것을 볼 수 있다.

소스트리에서는, 히스토리 > 취소할 시점 우클릭 > 커밋 되될리기

Step4. 평행우주 넘나들기 - Branch

git branch 브랜치이름: 브랜치 만들기

현 시점에서 두 미래로 분기하겠다는 의미이다.

git branch : 기존 branch master와 새로만든 branch가 존재하는 것을 확인할 수 있다.

새로 만든 branch 우주로 넘어가려면 git checkout 브랜치이름

아무런 변화가 없다. 왜냐하면 원 branch의 현 상태를 그대로 가져가기 때문.

그럼 이 평행우주에서 나만의 작업을 해보자.

원 상태로 되돌아가고 싶을 때, git checkout 이동할 branch 이름

카테고리:

업데이트:

댓글남기기