Git에 관련한 모든 것들

Git의 시작

1.1 Git이란?
“버전 관리”
git이 무엇인지 한번이라도 들어본 사람은 버전 관리라는 말을 들어봤을 것이다.
그렇다면 버전 관리란 무엇일까?

  • 버전 : 의미있는 변화들 ex) 기능 추가 혹은 개선, 버그 수정 등
  • 버전 관리: 이러한 변화들을 관리하는 방법론

지금까지 어떤 방식으로 파일을 관리해왔는지 생각해보자.

최종파일.hwp
진짜 최종.hwp
마지막 레포트.hwp
마지막 레포트1.hwp
진짜진짜 마지막 최종.hwp

익숙한 방식의 파일 관리이다. 그나마 나은 방법으로 파일명에 날짜를 적어 관리하기도 한다.
이러한 방식들은 어떤 파일이 진짜 최종인지 한눈에 알아볼 수 없고 어떤 내용이 수정되었는지, 마지막 파일의 바로 이전 파일이 어떤 파일인지, 한눈에 알 수 없다.
또, 이런 방식으로 협업을 한다고 생각하면 정말 끔찍하다.

정리를 해보면 버전 관리를 도입한 이유는

  1. 시간 여행 가능(원하는 시점의 파일로 돌아가 작업할 수 있음)
  2. 자료의 보존
  3. 협업 용이

1.2 Git 시작하기
자신의 프로젝트를 git으로 관리하는 방법은 git init과 git clone 두가지가 있다.

1.2.1 Git init

  1. 프로젝트를 시작할 폴더를 만든다.
1
2
$ mkdir first-project  (mkdir = make directory 폴더 생성)
$ cd first-project (cd = change directory 해당 디렉토리로 이동)
  1. git init
    first-project 안에 있는지 확인한 후, 해당 디렉토리에서 git init
1
$ git init

git init의 의미는 해당 디렉토리를 로컬 저장소로서 역할을 시작하겠다는 뜻이다.

  1. remote repository 생성
    내 github 계정으로 들어가서 새로운 레파지토리를 생성한다.
    이때, 새 레포의 이름은 만들어둔 프로젝트 폴더이름과 동일하게 설정해준다. (이름이 다르면 나중에 헷갈림) 리모트 레포지토리의 주소를 위 사진에서 클론한다. 그 다음 리모트 레포지토리의 주소를 로컬 레포지토리와 연결한다.
1
$ git remote add origin 복사한 주소

git remote add는 로컬에 리모트 주소를 연결할 때 쓰는 명령어이고 origin은 리모트 레파지토리의 별명이다.
말 그대로 별명이므로 dog이라 하든 first-project라고 하든 상관없다.

저장소가 맞게 연결되었는지 확인.

1
2
3
$ git remote add cat 복사한 주소  
혹은
$ git remote -v
  1. 재미있게 코딩하기
    first-project에 대한 작업을 한다.

  2. git add

add와 commit은 작동하는 최소 단위로 입력한다.
신나게 코딩하다가 ‘이쯤 add,commit해야겠다.’ 하면서 백업의 의미로 사용하는 것이 아니라
의미있는 변화 단위로 add,commit 해주면 된다.

1
$ git add 파일이름.확장자명
  1. git commit
1
$ git commit -m "add한 파일에 대한 설명"

혹은

1
$ git commit

vim 에디터로 설명을 적어주고 저장

commit message를 작성하는 방법은 다음 md에서 작성해보겠다.

1.2.2 Git clone

먼저, github에 들어가 레포 이름, 설명, lisence를 설정하고 리모트 레포지토리를 생성한다.
그 후, 리모트 레포의 주소를 복사한다.

이제 터미널로 돌아와 리모트 레포를 git clone한다.

1
$ git clone 복사한 주소

이후, 앞 과정과 동일하게 파일 생성하고 신나게 코딩!

git init 보다 git clone이 더 간단하다.
간단한 방법을 더 자주쓰겠지만 git init으로 시작하는 방법도 알고있도록 하자.