Git은 개인 혹은 팀간 프로젝트를 관리하는데 가장 널리 사용되고 있는 툴이다. 따라서 Git을 잘 다루는 것은 개발자에게 중요한 기술 중 하나이다. Git이란 어떤 개념이고 어떻게 사용하며, Git과 Github의 개념은 어떻게 다를까?
Git은 컴퓨터 파일의 변경사항을 추적하고 여러 사용자들 간에 해당 파일의 작업을 조율하기 위한 분산 버전 관리 시스템(Distributed Version Control System)이다.
Git이 없다면 파일은 위 그림과 같이 계속 수정되어 새로운 파일을 만들어낼 것이다. 그러나 Git을 사용한다면 파일 수정 시 변경사항을 따로 저장하며 좀 더 수월하게 작업을 수행할 수 있다. 특정 시점의 버젼으로 언제든 돌아갈 수 있으며, 프로젝트 파일의 변경사항을 추적하는 시스템이라고 생각할 수 있다.
앞서 Git은 Version Control System이라는, 파일이나 코드의 버젼을 컨트롤하는 시스템이라고 설명했다. 그렇다면 우리는 왜 코드 버젼 관리를 하고, 왜 Git을 써야할까?
git blame
이라는 명령어를 통해 어떤 사용자가 관여했는지 알 수 있다. git
으로 관리하는 것이 훨씬 편하고 효율적이다.따라서 git
을 사용하여 파일을 관리하는 것이 효율적이고 중요하다.
Github는 대표적인 무료 git 저장소로, Git repository를 위한 호스팅 플랫폼이다. GitHub (및 기타 유사한 플랫폼) 없이도 Git을 사용할 수 있지만 다른 개발자와 같은 프로젝트를 두고 협업하거나 내 코드를 공유하기는 어렵다.
Git은 VCS로, 파일 변경사항을 추적하는 도구라면
Github는 Git을 사용하는 프로젝트들을 위한 호스팅 서비스이다.
Github는 단순히 Git을 사용하는 프로젝트 저장소일 뿐 아니라, 개발자들의 Social Network 이기도 하다. 많은 유저들이 Github를 사용하면서 서로를 follow하고 자신의 프로젝트를 공유하면서 다른 개발자들과 교류하게 된다.
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으로 만들어 준다.
Git이라는 개념은 개발에 입문하면서 자주 들었고 Git을 잘 다루는 것이 개발자의 덕목이라는 것은 알았지만 Git이 정확히 어떤 개념이고, 왜 잘 다뤄야하는가에 대한 의문이 있었다.
그러나 오늘 세션을 통해 Git의 개념과 필요성에 대해 확실히 이해했고, Github를 통해 개발 협업 역량을 크게 키워야겠다는 마음을 가졌다.