TIL 17 | Git & Github

임종성·2021년 7월 14일
0

TIL

목록 보기
7/22
post-thumbnail

Git은 개인 혹은 팀간 프로젝트를 관리하는데 가장 널리 사용되고 있는 툴이다. 따라서 Git을 잘 다루는 것은 개발자에게 중요한 기술 중 하나이다. Git이란 어떤 개념이고 어떻게 사용하며, Git과 Github의 개념은 어떻게 다를까?

Git

Git은 컴퓨터 파일의 변경사항을 추적하고 여러 사용자들 간에 해당 파일의 작업을 조율하기 위한 분산 버전 관리 시스템(Distributed Version Control System)이다.

Git이 없다면 파일은 위 그림과 같이 계속 수정되어 새로운 파일을 만들어낼 것이다. 그러나 Git을 사용한다면 파일 수정 시 변경사항을 따로 저장하며 좀 더 수월하게 작업을 수행할 수 있다. 특정 시점의 버젼으로 언제든 돌아갈 수 있으며, 프로젝트 파일의 변경사항을 추적하는 시스템이라고 생각할 수 있다.

VCS(Version Control System)

앞서 Git은 Version Control System이라는, 파일이나 코드의 버젼을 컨트롤하는 시스템이라고 설명했다. 그렇다면 우리는 왜 코드 버젼 관리를 하고, 왜 Git을 써야할까?

  • 수정할 때 마다 파일을 만들지 않아도 된다.
    Git이 없다면 위의 그림처럼 수정때마다 새로운 파일을 생성하며 불필요한 데이터가 늘어나고, 작업시간이 늘어나게 된다.
  • 언제든 이전 버젼의 코드로 돌아갈 수 있다.
  • 이력을 남길 수 있다.
    잘못된 변경사항이 있거나 누가 책임을 질 것인가에 대한 질문이 있을 경우, git blame이라는 명령어를 통해 어떤 사용자가 관여했는지 알 수 있다.
  • 하나의 프로젝트를 여러 사용자가 협업이 가능하다.
    원시적인 tool로 하나의 파일을 수정하는 것 보다 git으로 관리하는 것이 훨씬 편하고 효율적이다.

따라서 git을 사용하여 파일을 관리하는 것이 효율적이고 중요하다.

Github

Github는 대표적인 무료 git 저장소로, Git repository를 위한 호스팅 플랫폼이다. GitHub (및 기타 유사한 플랫폼) 없이도 Git을 사용할 수 있지만 다른 개발자와 같은 프로젝트를 두고 협업하거나 내 코드를 공유하기는 어렵다.

Git은 VCS로, 파일 변경사항을 추적하는 도구라면
Github는 Git을 사용하는 프로젝트들을 위한 호스팅 서비스이다.

Github는 단순히 Git을 사용하는 프로젝트 저장소일 뿐 아니라, 개발자들의 Social Network 이기도 하다. 많은 유저들이 Github를 사용하면서 서로를 follow하고 자신의 프로젝트를 공유하면서 다른 개발자들과 교류하게 된다.

Use git with terminal

Git은 terminal 뿐 아니라 GUi 등으로 작업할 수 있어 편의성을 챙길 수 있지만, 예상 외의 상황에서는 반드시 terminal로만 작업하는 경우가 생길 수 있으므로 미리미리 terminal 작업환경에 익숙해지는 것이 좋다. 간단한 파일을 만든 후 github로 commit하는 실습을 해봤다.

cd ~를 통해 홈 디렉토리로 이동한 후 mkdir git1 명령어를 실행해 git1 이라는 디렉토리를 생성하고 cd git1을 통해 git1 디렉토리로 입장했다.

git1 폴더에 진입하여 git init을 통해 git을 초기화 한 후 ls -al을 실행했더니 파일의 변경사항을 저장하는 .git 파일이 보였다. 우리는 이 .git을 통해 파일의 변경사항을 추적 가능하다.

변경사항을 만들기 위해 touch jongseong.md로 파일을 생성하고, vi jongseong.md로 파일에 접근해 i키를 눌러 이름을 입력한 후 esc :wq로 파일을 빠져나왔다. 그 후 git status를 확인했더니 다음과 같았다.

git status는 파일이 어떤 상태인지 확인하고 무슨 변화가 일어나는지 확인하는 역할을 한다. git add는 파일 수정 이력 기록을 준비하는 것으로, 음식으로 따지면 장바구니에 담는것과 같은 역할을 한다. 장바구니에 담은 것만으로 구매가 확정된 것은 아니므로 장바구니에 넣었다가 빼는 것이 가능하고 기록으로 남지는 않는다.

git add .를 실행하고 git status를 확인하니 다음과 같았다.

git add 전과 다르게 커밋할 수 있는 상태로 바뀌었다. 장바구니에 물건이 담겼으니 이제 구매를 확정할 시간이다. git commit을 통해 파일 수정 이력 기록을 확정하고, 장바구니에 담긴 물건을 비운다.

git commit -m "Message"로 커밋시 특이사항이나 메시지를 담고 git status로 상태를 확인하니 커밋할 사항이 없는 깨끗한 상태임을 확인할 수 있었다. git log로 commit history를 확인할 수 있다.

이제 Github를 이용해 git1 폴더와 github의 repository로 연동을 할 수 있다. git remote add origin repository주소를 실행하면 내가 만든 repository와 git1 폴더가 연동되고, 나의 git을 origin으로 만들어 준다.

Today I Learn

Git이라는 개념은 개발에 입문하면서 자주 들었고 Git을 잘 다루는 것이 개발자의 덕목이라는 것은 알았지만 Git이 정확히 어떤 개념이고, 왜 잘 다뤄야하는가에 대한 의문이 있었다.

그러나 오늘 세션을 통해 Git의 개념과 필요성에 대해 확실히 이해했고, Github를 통해 개발 협업 역량을 크게 키워야겠다는 마음을 가졌다.

profile
어디를 가든 마음을 다해 가자

0개의 댓글