본문 바로가기

Programing/Git and GitHub

[Git 시작] 1. 깃(Git) 이란?

 파이썬(Python) 공부를 하면서 프로그래밍 언어에 대한 여러 자료를 수집하다 보면 깃(Git)과 깃(GitHub)에 대해 많이 언급된다. 

 프로그램을 하나 개발하다 보면 소스코드를 적게는 수십번, 많게는 수백번 수정한다. 이런 소스코드의 버전을 관리하기 위해 필요한 시스템이 깃이라고 한다.

 직업 특성상 작업을 하다보면 수많은 데이터의 버전을 관리해야된다. 분명 프로그래밍을 하면서도 같은 문제가 발생할 것이다. 이 깃과 깃허브를 통해 이런 부분에 대해 많은 도움을 받을 수 있다면 좋겠다.

 

목차

  • 깃으로 무엇을 할 수 있을까?
  • 깃 프로그램의 종류
  • 커맨드 라인 인터페이스

깃(Git)이란?

https://git-scm.com/downloads/logos

 2005년, Linux 커널의 개발을 위해 리누스 토르발스(Linus Torvalds)에 의해 깃(Git)이 개발되었으며 그는 깃을 소개하면서 '깃은 지옥에서 온 관리자'라고 말했다. 리눅스의 창시자이기도 한 리누스 토르발스가 이런 지옥같은 작업환경을 벗어나기 위해 만든 시스템이 깃이다. 리눅스를 개발자들은 깃을 통해 수많은 소스코드를 효율적으로 관리했다. 현재는 리눅스 뿐만 아니라 많은 프로그램의 소스코드가 깃을 통해 관리되고 있다. 한마디로, 텍스트 명령어 입력 방식의 버전 관리 소프트웨어이다.

 그리고 깃은 GNU General Public License의 조항에 따라 배포되는 무료 오픈 소스 소프트웨어다. 이런 깃은 구글, 페이스북, 트위터, 넷플릭스, 마이크로소프트 등 많은 회사에서 사용하고 있다.

 

 

1. 깃으로 무엇을 할 수 있을까?

 깃(Git)이 제공하는 핵심 기능은 크게 '버전 관리(Version Control)', '백업(Backup)', '협업(Collaboration)'으로 나눌 수 있다.

 

1.1. 버전 관리(Version Controll)

 사무직, 전문직 등 컴퓨터를 사용하는 직종에 있는 사람들은 항상 문서 및 파일의 수정을 하면서 아래와 같이 파일을 저장하는 경우가 많을 것이다. (제발 한번에 끝나자...)

 위 그림에서는 다행히? 5차 만에 통과를 했다. 하지만 만약 이렇게 100개 혹은 1,000개가 됐는데 팀장님이 '예전에 내가 수정하자고 했던 버전으로 진행하자.'라고 말씀하신다면 당연히 어떤 파일에 그 내용이 있고, 언제 수정했는지 기억할 수 없다.

 하지만 깃은 수정할 때마다 언제 수정했는지와 어떤 부분을 변경했는지 편하고 구체적으로 기록하기 위한 버전 관리 시스템이다.

 

1.2. 백업(Backup)하기

 많은 사람들이 한 번쯤은 컴퓨터나 외장 하드디스크가 갑자기 고장 나는 일을 겪었을 것이다. 만약 자료를 컴퓨터나 외장 하드디스크에만 저장해 둔다면 언젠가는 그 자료가 유실될 수 있다. 그래서 우리는 반드시 드롭박스(Dropbox)나 구글 드라이브(Google Drive)등에 '백업(Backup)'을 해야한다.

 이렇게 백업 공간을 제공하는 인터넷 서비스 중 깃 파일을 위한 것도 여러개 있다. 이 중 가장 많은 사람이 사용하는 것이 바로 '깃허브(GitHub)'다. (앞으로 깃과 깃허브에 대해 공부하며 차차 깃허브를 사용해 보자.)

 

1.3. 협업(Collaboration)하기

 앞서 언급한 깃허브와 같은 온라인 저장소의 서비스를 활용하면 여러 사람이 함께 일할 수 있다는 장점이 생긴다. 예를들어 하나의 프로그램을 여러명의 팀원이 작업 할 경우 팀원 A가 작업한 후 온라인 저장소에 올리면 그 파일을 다른 팀원 B가 내려받아 작업하고, 작업이 끝나면 다시 온라인 저장소에 올리는 방식으로 작업할 수 있다. 이렇게 팀원들이 파일을 자유롭게 주고 받으면서 일을 진행할 수 있기 때문에 누가 어느 부분을 어떻게 수정했는지 기록이 남기 때문에 오류 발생시 파악 및 해결하기 편리하다.

 뒤에 배울 내용으로는 깃은 '만약 여러 사람이 같은 파일을 수정하는 경우', '두 사람이 같은 파일의 같은 행을 수정하는 경우' 등 협업 과정에서 일어날 수 있는 여러 문제를 중간에서 정리해주는 기능도 있다.

 

 

2. 깃 프로그램의 종류

 조금 더 깃을 편리하게 사용할 수 있도록 해주는 다양한 깃 클라이언트 프로그램(Git Client Program)이 존재한다.

 

2.1. 깃허브 데스크톱(GitHug Desktop)

 깃 온라인 저장소 서비스 중 하나인 깃허브에서 제공하는 프로그램인 깃허브 데스크톱(GitHub Desktop)은 복잡한 깃 사용방법을 그래픽 사용자 인터페이스(Graphic User Interface, GUI)로 구현했다. 사용이 쉬운편이라 누구나 접근하기 편리하지만 자주 사용하는 기본적인 기능 위주로만 되어있다.

 

2.2. 소스트리(SourceTree)

 깃의 기본 부터 고급 기능까지 사용할 수 있는 프로그램인 소스트리(SourceTree)는 기능이 많아 사용 방법이 복잡한 편이다.

 

 위에 소개한 프로그램 외에도 편리하게 깃을 사용할 수 있게 해주는 깃 프로그램은 많다.

 

Git - GUI Clients

GUI Clients Git comes with built-in GUI tools for committing (git-gui) and browsing (gitk), but there are several third-party tools for users looking for platform-specific experience. If you want to add another GUI tool to this list, just follow the instru

git-scm.com

 위 사이트를 참고해서 윈도우, 맥, 안드로이드 등 다양한 환경에서 사용할 수 있는 깃 프로그램을 알아보고 자신에게 맞는 프로그램을 선택하자.

 

 

3. 커맨드 라인 인터페이스(Command Line Interface)

 터미널 창에 직접 명령을 입력해서 깃을 사용하는 방식인 커맨드 라인 인터페이스(Command Line Interface, CLI)는 위에 설명한 깃허브 데스크톱이나 소스트리와 같은 GUI 프로그램으로 깃을 사용하는 것 보다 어렵다. 기본적인 리눅스과 리눅스의 명령어를 외워야 하기 때문이다. 하지만 익숙해지면 훨씬 빠르게 깃을 다를 수 있다. 깃과 깃허브 공부에 참고하고 있는 책에서는 이 커맨드 라인 인터페이스 방법을 중심으로 설명한다.

 

 

참고: 책 '지옥에서 온 문서 관리자 깃&깃허브 입문'의 내용