그 외 정리

git / GitHub / Github gist

kimsangjunzzang 2025. 7. 19. 16:49

안녕하세요, 루피입니다.

 

오늘은 개발하면서 우리가 자주 사용하는 git,GitHub에 대해 정리해보고, Github gist에 대해서도 간략하게 정리하는 시간을 가져보도록 하겠습니다. 바로 시작합니다.


1. git이란 무엇인가?

공식문서를 바탕으로 확인해보겠습니다.

문서의 설명을 따라가면, Git은 작은 프로젝트부터 매우 큰 프로젝트까지 모든 것을 빠르고 효율적으로 처리하도록 설계된 무료 오픈 소스 분산 버전 관리 시스템입니다.

1) 분산 버전 관리 시스템이란?

각 개발자가 중앙 서버에 접속하지 않은 상태에서도 코드 작업을 할 수 있는 버전 관리 시스템입니다. 기존의 중앙집중식 시스템(CVCS)과 달리 저장소의 전체 히스토리를 각 개발자의 컴퓨터에 복제하는 방식으로 작동합니다. 이 덕분에 오프라인 상태에서도 커밋(Commit)이 가능하고, 다른 개발자의 작업에 영향을 받지 않고 독립적으로 브랜치(Branch)에서 작업하기 용이합니다.

2) git의 필수 명령어

  • git init: 현재 디렉토리에 새로운 Git 저장소(.git 폴더)를 생성합니다.
  • git clone [저장소 URL]: 원격 저장소를 내 컴퓨터(Local)로 복제합니다.
  • git add [파일 이름]: 작업 디렉토리의 변경 내용을 스테이징 영역으로 옮겨 다음 커밋에 포함될 수 있도록 준비시킵니다.
  • git commit -m "커밋 메시지": 스테이징 영역에 있는 파일들의 변경 사항을 저장소 히스토리에 확정적으로 커밋합니다.
  • git status: 저장소의 현재 상태를 보여줍니다. 변경 되었지만 아직 커밋되지 않은 파일 등을 확인할 수 있습니다.
  • git log: 저장소의 커밋 히스토리를 시간순으로 보여줍니다.
  • git branch: 브랜치 목록을 보여주거나, 새로운 브랜치를 생성하고 삭제하는 데 사용됩니다.
  • git checkout [브랜치 이름]: 다른 브랜치로 작업을 전환합니다.
  • git merge [브랜치 이름]: 현재 브랜치에 다른 브랜치의 변경 내역을 병합합니다.
  • git pull: 원격 저장소의 최신 변경 내역을 가져와서 현재 로컬 브랜치와 병합합니다.
  • git push: 로컬 저장소의 커밋 내용을 원격 저장소에 업로드합니다.

2. GitHub란 무엇인가?

GitHubGit을 사용하는 프로젝트를 위한 웹 기반 호스팅 서비스입니다. Git이 버전 관리를 위한 기술 그 자체라면, GitHub는 그 기술을 활용하여 개발자들이 자신의 코드를 온라인에 저장하고 다른 사람들과 협업할 수 있도록 돕는 플랫폼입니다.

GitHub의 주요 기능

  • 원격 저장소(Remote Repository): 작성한 코드를 온라인 공간에 안전하게 저장하고 관리할 수 있습니다.
  • 협업 기능
    • Pull Request: 다른 사람의 코드 변경 내역을 리뷰하고 안전하게 병합할 수 있는 핵심 기능입니다.
    • Issue Tracking: 프로젝트의 버그, 개선 사항, 할 일 등을 체계적으로 관리할 수 있습니다.
  • 코드 공유 및 오픈소스: 전 세계 개발자들과 코드를 공유하고, 유명 오픈소스 프로젝트에 기여할 수 있는 통로가 됩니다.

쉽게 비유하자면, Git이 컴퓨터에 설치된 워드 프로세서라면, GitHub는 구글 독스와 같습니다. 혼자서 문서를 작성하고 버전을 관리할 수 있지만(Git), 다른 사람과 실시간으로 공유하고, 댓글을 달고, 함께 편집하는(GitHub) 것이 더 효율적인 것과 같은 원리입니다.


3. GitHub gist란 무엇인가?

GitHub GistCode Snippet이나 메모, 스크립트 등을 빠르고 쉽게 공유하기 위한 서비스입니다. 전체 프로젝트를 관리하는 일반적인 GitHub 저장소와는 달리, Gist는 몇 개의 파일로 이루어진 가벼운 코드 공유에 특화되어 있습니다.

GitHub gist 주요 특징

  • 간편한 공유: 전체 저장소를 만들 필요 없이 코드 일부만 빠르게 생성하고 공유 링크를 얻을 수 있습니다.
  • 버전 관리: Gist 역시 Git을 기반으로 하므로 생성한 Code Snippet의 변경 이력을 추적하고 관리할 수 있습니다.
  • Public/Secret 설정: Gist를 만들 때 전체 공개로 할지, 링크를 가진 사람만 볼 수 있는 Secret로 할지 선택할 수 있습니다. 하지만, Secret Gist도 링크가 유출되면 누구나 볼 수 있으므로 민감한 정보는 올리면 안 됩니다.

개발 중에 발견한 유용한 코드나, 기술 블로그에 예시 코드를 첨부하거나, 다른 사람에게 빠르게 코드 리뷰를 요청할 때 매우 유용하게 사용됩니다.


4. 간단한 사용방법 예시

전체적인 플로우를 간단하게 저의 사용법을 바탕으로 보겠습니다. 실제 프로젝트를 진행할 때는 다른 개발자들과 함께 하기 때문에, main 브랜치에 직접 코드를 올리는 경우는 거의 없습니다.

 

대신, 각자의 기능 개발을 위한 브랜치를 만들고, 작업이 완료되면 Pull Request(PR) 를 통해 동료의 코드 리뷰를 거쳐 안전하게 Merge 하는 방식을 사용합니다.

1) 기능 개발을 위한 Branch 생성

main 브랜치에서 직접 작업하지 않고, 내가 만들 기능의 이름으로 새로운 브랜치를 만듭니다. 예를 들어 '로그인 UI'를 만드는 작업을 한다면, 브랜치 이름은 feature/login-ui 와 같이 짓는 것이 일반적입니다.

# 1. 원격 저장소의 최신 코드를 받아옵니다.
git pull origin main

# 2. 'feature/login-ui' 라는 이름의 새 브랜치를 만들고, 그 브랜치로 바로 이동합니다.
git checkout -b feature/login-ui

이제부터 제가 작성하는 모든 코드는 main 브랜치가 아닌 feature/login-ui 브랜치에만 기록됩니다.

2) 코드 작업 후 원격 저장소에 Push

새로운 브랜치에서 열심히 로그인 UI를 개발합니다. 코드를 작성하고 수정한 뒤, 이전과 같이 addcommit을 진행합니다.

# 1. 변경된 파일들을 스테이징합니다.
git add .

# 2. 변경 사항을 커밋으로 남깁니다.
git commit -m "Feat: 로그인 버튼 및 UI 레이아웃 구현"

이제 이 브랜치를 GitHub 원격 저장소에 올려서 다른 사람들도 볼 수 있게 해야 합니다.

# 'feature/login-ui' 브랜치를 원격 저장소(origin)에 푸시합니다.
git push origin feature/login-ui

3) GitHub에서 Pull Request(PR) 생성

이제 GitHub 저장소 페이지에 접속하면, 방금 푸시한 브랜치에 대해 Pull Request를 생성하라는 노란색 알림창이 보일 겁니다.

  1. 'Compare & pull request' 버튼을 클릭합니다.
  2. PR의 제목과 내용을 작성합니다.
    • 제목: 이 PR이 어떤 작업을 했는지 명확하게 요약합니다. (예: Feat: 로그인 UI 기능 구현)
    • 내용: 변경 사항에 대한 상세한 설명, 스크린샷, 동료 리뷰어에게 특별히 확인을 요청할 부분 등을 적습니다.
  3. 'Create pull request' 버튼을 누르면 PR 생성이 완료됩니다.
    흔히, 저는 피알 날렸습니다. 라고 말하기도 하고, 요즘은 슬랙을 이용해 PR을 보내면 슬랙에서 자동으로 알려주는 자동화 방법이있습니다.PR이 생성되면 이제 동료 개발자들이 내 코드를 검토하고 의견을 남길 수 있습니다.

4)  코드 리뷰 및 Merge

  1. 리뷰어는 코드 변경 사항에 댓글을 달거나, 수정이 필요하면 변경을 요청할 수 있습니다.
  2. 모든 리뷰가 끝나고 코드를 main 브랜치에 합쳐도 좋다는 Approve가 나면, 'Merge pull request' 버튼을 눌러 병합을 진행합니다.
  3. Merge가 완료되면, feature/login-ui 브랜치에서 작업했던 모든 코드가 드디어 main 브랜치에 안전하게 반영됩니다.

이러한 Branch -> Push -> Pull Request -> Merge 과정으로 프로젝트가 진행됩니다.


오늘도 화이팅입니다.