TIL # 5 Git & Github

이승민·2020년 6월 4일
0
  • Git 이란

리누스 토발즈 (Linus Benedict Torvalds) 가 만든 소스코드를 효율적으로 관리하기 위해 사용되는 버전 관리 시스템이다.

예를 들어 어떠한 문서를 편집하고 편집하기 전 버전을 확인해야할 때 생각할 수 있는 간단한 방법은 편집을 할때마다 파일의 이름을 변경해가면서 저장하는 것일 것이다.

하지만 이러한 방식을 사용한다면 파일의 어떤 부분이 수정되었고 변경되었는지 파악하기가 어렵고 여러명이서 협업을 하는 경우 동시에 같은 문서를 수정하고 있는 상황도 발생할 수 있다.

바로 이러한 문제를 해결하기 위해 만들어진 것이 Git 과 같은 버전 관리 시스템이다.

Git에서는 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 돌아갈 수도 있다.
또 내가 올리려는 파일이 누군가 편집한 내용과 충돌한다면, 서버에 업로드 할 때 경고 메시지가 발생된다.

  • 저장소

Git은 저장소 (Git repository)라는 말그대로 파일이나 폴더를 저장해 두는 곳이다.

Git 저장소가 제공하는 좋은 점 중 하나는 파일이 변경 이력 별로 구분되어 저장된다는 점이이다. 비슷한 파일이라도 실제 내용 일부 문구가 다르면 다른 파일로 인식하기 때문에 파일을 변경 사항 별로 구분해 저장할 수 있다.

Git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 제공한다.

  • 원격 저장소 (Remote Repository) : 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소이다.
  • 로컬 저장소 (Local Repository) : 내 PC에 파일이 저장되는 개인 전용 저장소이다.

내 PC의 로컬 저장소에서 작업하다가 작업한 내용을 공개하고 싶을 때 원격 저장소에 업로드한다. 원격 저장소에서 다른 사람이 작업한 파일을 로컬 저장소로 가져올 수도 있다.

  • commit

Local repository를 만드는 방법에는 두가지가 있다.

  1. 아예 새로운 저장소를 만드는 방법
  2. 이미 만들어져 있는 Remote repository를 Local repository로 복사해오는 방법

1번 방법은 프로젝트에 사용할 폴더를 만든 후 git init 명령어를 사용하여 저장소를 지정한다.

$ mkdir hello-world
$ cd hello-world
/hello-world $ git init

이 과정을 마치면 hello-world 디렉토리에 .git 이라는 디렉토리가 생긴다.

2번 방법은 github의 url을 복사해오는 것이다.

$ git clone url 폴더이름

저장소에 올리기 전 내 pc에서 작업하는 폴더를 Work tree라고 하며 저장소에 업로드하기 전 Index라고 불리는 공간에 등록해줘야한다.

이를 staging 이라고 표현하며, staging한 파일을 저장소에 업로드하는 것을 commit이라고 표현한다.

정리해보면 Work tree -- (1) --> Index -- (2) --> repository
(1) : staging
(2) : commit

예를 들어, 10개의 파일을 수정했지만 그 중에 7개만 저장소에 업로드하고 싶을 때, 이 7개만 선택하는 작업이 staging 이다.

파일을 Index에 등록하는 방법은 아래와 같다.

$ git add 파일명.확장자

$ git status를 이용하여 현재 폴더의 상태를 확인할 수 있는데 현재 폴더에 있는 파일 중 추적 대상이 되지 않은 파일이 있다면 Untracked files 로 나오게 된다.

이럴때 $ git add 를 이용하여 해당 파일을 추적 대상으로 등록할 수 있다.

파라미터에 . 을 지정하면 모든 파일을 Index에 등록할 수 있다.
$ git add .

위 과정을 모두 끝내고 해당 파일을 commit 하기 위해서는

$ git commit -m "comment"

를 사용한다.
"comment" 에는 commit과 함께 남기고 싶은 메시지를 입력한다.

이후 상태를 확인해보면

$ git status
# On branch master
nothing to commit (working directory clean)

라는 내용이 나오며 모든 변경사항이 commit 된 것을 알 수 있다.

이후 $ git log 를 입력하게 되면
누가 언제 어떻게 commit을 남겼는지 확인할 수 있다.

profile
프론트 앤드 개발자를 꿈꿉니다.

0개의 댓글