[git]깃허브-1

한상욱·2023년 8월 8일
0

git

목록 보기
9/10
post-thumbnail

들어가며

지금까지는 깃을 이용해서 개인의 프로젝트를 관리하는 법에 대해서 알아보았습니다. 하지만, 대부분의 사람들은 깃을 처음 시작하면 깃은 협업툴이다라고 생각하는 분들이 있습니다. 깃허브를 이용하면 이러한 협업이 가능해요. 이제 깃허브에 대해서 알아보겠습니다.

원격 저장소(remote repository)와 지역 저장소(local repository)

깃은 분산 저장소 방식을 이용해서 프로젝트를 관리할 수 있습니다. 분산 저장소는 여러개의 저장소가 존재한다는 의미라는 것을 쉽게 알겠죠? 여기서 분산 저장소로 사용되는 것은 지역 저장소와 원격 저장소입니다.

초기에 프로젝트를 생성하면 git을 사용하기 위해서 git init, git config 명령어들을 사용해서 초기화작업을 했습니다. 이렇게 저장소(repository)를 초기화할 수 있는데, 여기서 저장소는 개인의 PC를 의미합니다. 이것을 지역 저장소(local repository)라고 합니다.

그렇다면 이제 원격 저장소에 대해서 알아보겠습니다. 사용자는 지역 저장소를 초기화하고 여러 코드들을 작업한 뒤 커밋을 합니다. 이 과정 중에서 여러 브랜치가 만들어지고, 여러 커밋이 생기겠죠. 이러한 결과들을 한 곳에 모아둘 수 있습니다. 이렇게 모아진 장소를 원격 저장소(remote repository)라고 합니다. 깃에서는 원격 저장소가 깃허브(GitHub)입니다.

깃허브(GitHub)와 push, pull

예를 들어, 한 개발자님이 새로운 프로젝트를 위해서 PC에서 git init을 했다고 하겠습니다. 이 개발자님은 해당 프로젝트를 열심히 작업해서 중간중간에 깃허브에 해당 프로젝트를 계속해서 업데이트시킬 수 있습니다. 이렇게 지역 저장소의 코드를 원격 저장소인 깃허브에 업로드하는 행위를 푸시(Push)라고 합니다.

그렇다면 반대의 경우도 있겠죠. 이 개발자님은 동료 개발자님의 도움을 받고 있었습니다. 그래서 동료 개발자님도 작업한 코드를 푸시하겠죠. 이 경우에는 해당 내용을 지역 저장소에 갱신해서 가져와야 코드 충돌이 발생하지 않을겁니다. 그렇기 때문에 개발자님이 동료의 코드를 가져올 것입니다. 이렇게 원격 저장소의 코드를 지역 저장소로 가져오는 행위를 풀(Pull)이라고 합니다.

이렇게 푸쉬와 풀을 반복하면 문득 그런 생각이 들거에요. 그러면 원격 저장소와 지역 저장소에서 그 많은 양의 코드 데이터가 송수신하게 되는지말이죠. 원격 저장소와 지역 저장소는 프로젝트의 변경사항에 대한 정보를 서로 주고 받는거에요. 그리고 그 정보를 이용해서 내용을 수정할 수 있습니다. 만약 직접 생코드를 주고받으면 트래픽이 너무 크겠죠?

깃허브를 사용하는 이유

이제, 깃허브를 이용하면 어떤것들을 할 수 있는지 알아보죠. 깃허브에는 위의 설명처럼 사용자의 프로젝트들이 저장되어 있습니다. 물론, 그 사용자의 범위는 굉장히 방대합니다. 이러한 구조 덕분에 정말 많은 것을 할 수 있어요.

1. 백업

지역 저장소에서 작업한 프로젝트들은 그 안에서도 자체적으로 여러 버전으로 백업되어 있다고 할수도 있습니다. 하지만, 컴퓨터가 불의의 사고로 망가지거나 .git 초기화파일이 삭제되는 경우 그 프로젝트는 안전하지 않겠죠. 이때, 깃허브롤 사용해서 해당 프로젝트를 깃허브에 백업해둔다면, 다른 PC에서 혹은 새로 구입한 PC에서 아니면 원래의 PC에서 깃허브의 프로젝트를 그대로 가져올 수 있습니다.

2. 협업

아마 사용자들이 깃허브를 사용하는 주된 이유는 바로 협업일겁니다. 깃허브에 전체 소스코드를 올릴 수 있다면, 당연히 같은 팀의 팀원들도 해당 프로젝트에 접근해서 개인의 지역저장소로 가져올 수 있습니다. 물론, 가져오기만 해서 효율적인 협업이 진행되는가는 별개입니다만, 협업이 가능한 것이죠. 그리고 다시 프로젝트에 합(merge)하는 경우 정책을 적용해서 합치기 전 소스코드를 리뷰할수도 있습니다.

3. 오픈소스

깃허브에는 정말 다양한 사람들의 소스코드가 올라와있습니다. 이 프로젝트의 소스코드들은 대부분 오픈소스에요. 깃허브를 탐색하면서 실력이 좋은 여러 개발자분들의 코드를 감상할수도 있고, 직접 지역 저장소로 가져와서 사용할수도 있습니다.

profile
개발공부를 기록하자

0개의 댓글