Git 동작 원리 – Git과 Github 차이 및 깃허브 사용법 개념 총정리

StableDiffusion을 설치하기 위한 초기 단계로 깃(Git)을 설치하게 됩니다. 비전문가로서 Git을 처음 접하는 분들은 Git 동작 원리에 대해 모르고 따라하기 때문에, 설치 과정에서 실수가 발생하기도 합니다. 설치가 잘 되었다 하더라도, 이후 Github를 바탕으로 이뤄지는 UI 업데이트 등이 필요할 때 에러가 발생하면 어떻게 대처해야 할지 난감합니다. 당장 Git과 Github의 차이점도 파악하지 못한 상황이라면 더더욱 답답할 수 밖에 없습니다. 하지만 Git 동작 원리 및 개념에 대한 간단한 이해만 있다면 이런 답답한 상황을 의외로 간단히 대처할 수 있는데요, 본 글에서는 Git 동작 원리에 대해 자세히 알아보고 이를 이해하기 위한 기초 개념을 정리해보도록 하겠습니다.

Git 동작 원리

Git 동작 원리를 이해하기 위해서는 먼저 Git과 Github에 대해 간략히 살펴볼 필요가 있습니다. 낯설면서도 비슷한 이름 때문에 둘을 같은 것이라 이해하시는 분들이 간혹 있지만, 그 차이에 대해 명확히 짚고 넘어가야 이후 깃을 더욱 효율적으로 활용할 수 있습니다.

Git과 Github 차이

소프트웨어 개발 분야에서 Git과 GitHub는 자주 언급되지만, 이 두 개념은 분명한 차이가 있습니다. Git 동작 원리를 이해하기 위해서는 먼저 두 개념에 대해 확실히 짚고 넘어갈 필요가 있습니다. 우선, Git은 버전 관리 시스템(VCS)으로, 개발자들이 소스 코드의 변경 사항을 추적하고 여러 버전 간의 차이를 관리할 수 있게 해줍니다. Git은 로컬 컴퓨터에서 독립적으로 작동하며, 분산된 환경에서도 여러 개발자가 협업할 수 있도록 지원합니다.

반면에, GitHub는 Git을 기반으로 한 웹 기반 호스팅 서비스입니다. GitHub는 Git의 모든 기능을 제공할 뿐만 아니라, 프로젝트 협업을 위한 추가적인 기능들을 제공합니다. 이러한 기능에는 버그 추적, 기능 요청, 작업 관리, 위키, 그리고 소셜 네트워킹 같은 기능들이 포함됩니다. GitHub는 클라우드에서 작동하여, 전 세계 어디서나 접근할 수 있으며, 프로젝트에 대한 중앙 집중식 저장소 역할을 합니다.

Git과 Github 차이

간단히 말해서, Git은 소프트웨어 개발의 기본적인 버전 관리를 담당하는 도구이며, GitHub은 이러한 Git 시스템을 기반으로 하는, 협업과 코드 공유를 위한 플랫폼입니다. Git은 로컬 환경에서 작동하며, GitHub은 이를 웹상에서 확장시키고, 추가적인 협업 도구를 제공합니다. 따라서 깃허브를 활용하기 위해서는 먼저 깃에대한 이해가 필수적으로 선행되어야 합니다. 아래에서는 깃으로 관리하는 프로젝트가 깃허브에 업로드되는 과정을 간략히 살펴보도록 하겠습니다.

git init 부터 git push까지

Git 동작 원리 4단계

Git init

Git init(깃 초기화)는 깃으로 현재 프로젝트의 버전 관리를 하겠다는 선언을 하는 단계입니다. 컴퓨터에 깃이 설치된 상태에서 터미널을 열고 프로젝트가 생성될 폴더로 이동한 뒤 해당 폴더에서 git init이라는 명령어를 입력하면, 위 그림과 같이 숨긴폴더 상태로 .git이란 이름을 가진 폴더가 생성됩니다. 이 폴더가 생성되면 해당 폴더를 가지고 있는 부모 폴더(프로젝트 폴더) 전체가 이제 버전 관리의 대상이 되는 것입니다. 즉, 버전관리가 되는 프로젝트 폴더에 파이썬 스크립트(ex. main.py), 텍스트 파일(ex. aaa.xtx) 또는 이미지 파일(bbb.jpg)등이 생성되거나 삭제될 때 이런 데이터의 변동사항을 깃이 추적하게 됩니다.

만약 해당 프로젝트의 버전 관리를 더이상 하지 않겠다면, .git 폴더를 삭제하는 것으로 간단히 깃을 통한 버전관리를 중단할 수 있습니다. 반대로 다시 버전관리를 시작해야한다면 언제든 깃 초기화를 통해 다시 현재 상태부터 버전 관리를 시작 할 수 있습니다.

Git add

이제 프로젝트 폴더는 git init을 통해 버전 관리의 대상이 되었으므로, 이를 버전으로 기록할 시점을 사용자가 지정해줘야 합니다. 깃은 총 2단계에 걸쳐 버전을 확정적으로 기록하게 됩니다. 그 첫 단계가 바로 위 그림에서는 깃상자라고 표기된 단계로, 실제로 사용자에게 보여지는 폴더는 아니지만, git add 명령어를 통해 깃에서 마련한 특정 공간(스테이지)에 내 프로젝트를 임시로 올려둘 수 있습니다.

Git commit

git commit hash example
초록색 영문+숫자조합은 깃 커밋으로 발행된 해시값 중 초기 7자리

앞서 살펴본 git add 단계를 거쳐, 사용자가 어떤 특정 버전으로 이 프로젝트를 기록해두고 싶다면 git commit을 통해 깃상자에 올려진 프로젝트 상태를 특정 버전으로 저장할 수 있습니다. 이렇게 커밋을 통해 깃버전으로 저장하면 해당 버전을 가리키는 고유번호(hash: 해시 값)가 발행됩니다. 따라서 추후 백업이나 복구를 해야할 때 그 고유번호를 통해 복구시점으로 돌아갈 수 있습니다.

Git push

커밋까지 마쳤다면 자신의 컴퓨터에는 해당 프로젝트의 특정 버전이 저장된 상태입니다. 개인 개발을 하시는 분들은 이렇게만 하더라도 버전 관리에 큰 불편함이 없기 때문에 깃허브를 굳이 사용하지 않는 경우도 더러 있습니다. 하지만, 협업을 해야하거나, 혹은 오픈소스로 개발중인 프로젝트에 참여 또는, 운영하는 경우라면 깃허브에 내 깃 버전을 업로드함으로써 다른 사람들과 해당 버전을 공유할 수 있습니다. 이 때 Git push 명령을 통해 내 프로젝트와 연결된 깃허브 저장소(repository)에 앞서 커밋을 완료한 버전을 업로드할 수 있습니다.

여기까지 내가 생성한 개발 프로젝트(폴더)를 깃을 통해 로컬(내 컴퓨터)에서 버전기록하고, 이를 깃허브로 올리는 과정에 대해 간략하게 살펴보았습니다. 실제로 해당 과정을 수행하기 위해서는 깃 설치부터, 터미널을 통해 명령을 입력하는 방법, add 명령어를 통해 스테이지(깃상자)에 어떤 파일을 올려둘지 명령하는 방법, 커밋할 때 메세지를 남기는 방법, 깃허브와 내 깃을 연동하는 방법 등에 대해 조금 더 구체적으로 살펴볼 필요가 있습니다.각 단계의 구체적인 실행 방법에 대해서는 다른 포스팅에서 자세히 다루고 있으므로 참고 부탁드립니다.

깃허브(Github) 사용법

이 글을 통해 깃허브 사용법을 찾고계신 분들이라면, 아무래도 깃과 깃허브에 대해 조금 생소하기 때문에, 깃허브에서 어떻게 프로젝트를 내려받는 지를 궁금해하실 것이라 생각됩니다. 앞서 위에서는 Git 동작 원리와 내가 직접 생성한 프로젝트를 깃허브에 올리는 과정에 대해 간략히 살펴보았는데요, 이번에는 다른 사람이 올려둔 프로젝트를 다운받는 방법과 다운받은 프로젝트의 업데이트가 있을 때 이 업데이트를 반영하는 방법 등에 대해 간략히 살펴보도록 하겠습니다.

Git clone

깃허브에 방문하면 수많은 프로젝트를 제한없이 내려받아 사용할 수 있습니다. 이는 많은 개발자들이 자신의 프로젝트를 깃허브에 “public으로 업로드”하기 때문입니다. 만약 개발자가 코드를 공개하지 않고 개인 또는 특정 팀원들과 공유하기만을 원한다면 해당 프로젝트는 “private”으로 업로드 되어 있기 때문에 권한이 없는 사람은 접근조차 불가능합니다.

하지만 최근에는 많은 개발자들이 코드를 오픈소스로 제공하고 있으며, 불특정 다수가 해당 프로젝트의 코드 개선에 참여하면서 코드를 완성해나가기도 합니다. 이런 오픈소스 코드를 직접 수정 보완하는 작업에 참여하지 않더라도 개발에 ‘개’짜도 모르는 초보도 프로젝트를 다운받아 사용하는데는 전혀 문제가 없습니다. 프로젝트 폴더를 다운받는 것을 깃 클론(Git clone)이라고 하는데요, 말 그대로 개발자가 업로드한 프로젝트 폴더를 통째로 내 컴퓨터로 복제(clone) 하는 것입니다.

automatic1111 webui repository

깃 클론을 하는 방법은 매우 간단합니다. 먼저 복제하고 싶은 프로젝트의 깃허브 페이지(repository)로 이동합니다. 여기서는 Automatic1111님의 stable-diffusion-webui를 예로 들겠습니다. 해당페이지 상단의 <> Code를 누른 뒤, 우측의 Code 버튼을 누르면 아래에 Clone을 위한 주소가 나타납니다. 오른쪽의 복사 버튼을 누르거나, 해당 주소를 직접 복사합니다.

git clone terminal

이제 내 컴퓨터에 해당 프로젝트를 저장할 위치를 정합니다. 위 예시에서는 macOS의 바탕화면에 clone_test라는 폴더를 새로 만들었습니다. 터미널을 열고, 새로 만든 폴더로 이동합니다. cd(change directory) 명령어 뒤에 폴더명을 입력하면 해당 폴더로 진입합니다. 부모 폴더로 빠져나오기 위해서는 cd ..을 입력합니다. 예시에서는 cd desktop을 통해 바탕화면으로 이동한 뒤, 바탕화면에서 다시 cd clone_test를 입력해 새로 만든 clone_test 폴더로 진입했습니다. 이제 터미널을 clone_test 폴더에 위치했으므로 여기서 프로젝트를 다운받도록 합니다. 프로젝트를 다운받는 명령어는 git clone입니다. git clone 뒤에 앞서 복사해둔 주소를 입력하면 해당 프로젝트를 알아서 다운받습니다.

cd 명령어 등 터미널 사용이 어려운 분들은 위 그림을 참고하여 실행하시거나, 윈도우 사용자시라면 아예 처음부터 다운받고자 생성한 폴더를 열고 해당 폴더에서 터미널을 실행하여 바로 git clone 명령어를 입력하셔도 됩니다. 자세한 터미널 사용 방법은 아래의 “CMD 터미널 개념과 기초”를 참고 부탁드립니다.

Git pull

Git 동작 원리 및 깃과 깃허브에 대한 이해가 없는 상태에서 우여곡절끝에 특정 프로젝트 설치를 완료했다면, 해당 프로젝트의 업데이트가 있을 때 대응하지 못하는 분들이 많습니다. 그런데 깃의 동작 원리를 간략하게라도 이해하신 분들은 업데이트가 그렇게 어렵지 않다는 것을 직감적으로 알 수 있습니다. 왜냐하면 코드 또는 여러 파일의 추가/삭제에 따른 업데이트 버전이 이미 깃허브에 올라온 상황이라면, 우리는 그 업데이트 된 부분(이전 버전과 바뀐부분)만 내려받아 적용하면 되기 때문입니다. 이 때 사용하는 명령어가 바로 Git pull입니다. 위에서 살펴본 깃 클론보다 더욱 간단한 명령어로, 터미널에서 프로젝트 폴더로 이동한 뒤 git pull을 입력하는 것만으로 간단하게 업데이트가 완료됩니다.

git pull terminal

만약 내 컴퓨터에서 프로젝트 폴더 내 변경사항 등이 발생하여, 깃허브의 버전과 충돌이 일어나는 상황이라면, 내 프로젝트 폴더를 깃 클론 상태와 동일하게 맞춘 뒤 Git pull 명령어를 입력해 업데이트를 진행할 수 있습니다. 하지만 깃을 잘 다루지 못하는 상태에서 깃 충돌을 해결하는 것이 생각보다 까다롭기 때문에, 만약 충돌 해결이 어려운 경우라면 아예 새로운 폴더를 생성한뒤 깔끔하게 git clone을 통해 업데이트 된 프로젝트를 새로 다운 받는 방법을 권장드립니다.

1 thought on “Git 동작 원리 – Git과 Github 차이 및 깃허브 사용법 개념 총정리”

Comments are closed.