카테고리 없음

GIT & GITHUB

ByteGuard 2024. 10. 2. 06:21

GitHub는 소프트웨어 개발자들이 협업하고 소스 코드를 관리할 수 있는 플랫폼입니다. Git이라는 분산 버전 관리 시스템을 바탕으로 동작하며, GitHub는 Git을 웹 기반 인터페이스로 제공하는 호스팅 서비스입니다. 이제 Git과 GitHub의 기본 개념을 세부적으로 설명하겠습니다.

1. Git과 GitHub의 차이

  • Git: 분산 버전 관리 시스템입니다. 로컬 컴퓨터에서 소스 코드의 버전 이력을 관리하고, 파일 변경 사항을 추적할 수 있게 도와줍니다. 개발자는 Git을 이용해 소스 코드의 과거 버전으로 돌아가거나, 여러 브랜치를 통해 서로 다른 버전의 코드를 독립적으로 관리할 수 있습니다.
  • GitHub: Git으로 관리된 프로젝트를 인터넷에서 호스팅해주는 플랫폼입니다. GitHub를 이용하면 여러 개발자들이 동일한 프로젝트에 동시에 참여할 수 있으며, 코드의 변경 사항을 추적하고 협력하는 과정이 용이해집니다.

2. 레포지토리(Repository)

레포지토리는 특정 프로젝트의 소스 코드, 관련 파일 및 그 파일들의 변경 내역을 저장하는 장소입니다. 하나의 프로젝트는 하나의 레포지토리로 관리되며, GitHub에서 레포지토리를 생성하여 프로젝트를 관리할 수 있습니다.

레포지토리의 주요 기능:

  • 코드 저장: 프로젝트와 관련된 모든 파일과 코드가 저장됩니다.
  • 버전 기록: 각 파일의 변경 이력이 저장되어 언제든지 이전 상태로 복원할 수 있습니다.
  • 협업 도구: 여러 사람이 같은 프로젝트에 기여할 수 있도록 다양한 협업 기능이 제공됩니다.

3. 클론(Cloning)

클론은 GitHub에 있는 원격 레포지토리를 로컬 컴퓨터에 복제하는 작업입니다. 클론을 하면 원격에 있는 프로젝트의 모든 파일과 변경 이력을 로컬에 다운로드하여 개발 작업을 시작할 수 있습니다.

git clone https://github.com/username/repository.git

4. 커밋(Commit)

커밋은 소스 코드의 특정 상태를 저장하는 작업입니다. 커밋은 프로젝트 파일의 스냅샷을 저장하며, 각 커밋은 고유한 해시 값을 가집니다. 커밋을 통해 소스 코드의 변경 이력을 관리할 수 있으며, 필요할 때 특정 시점의 코드로 돌아갈 수 있습니다.

커밋을 생성하는 과정:

  1. 파일 변경: 소스 코드 파일을 수정하거나 새 파일을 추가.
  2. 스테이징(Staging): 변경된 파일을 커밋하기 전에 스테이지 영역에 올립니다.
     
     
    git add 파일명
     
  3. 커밋: 스테이지에 올린 파일을 커밋합니다.
     
    git commit -m "커밋 메시지"

5. 브랜치(Branch)

브랜치는 프로젝트의 여러 버전을 독립적으로 관리할 수 있는 기능입니다. 기본적으로 모든 Git 레포지토리에는 main 또는 master라는 기본 브랜치가 있으며, 개발자는 이 브랜치에서 다른 브랜치를 생성해 독립적인 작업을 할 수 있습니다.

예를 들어, 새로운 기능을 개발하기 위해 브랜치를 생성하고 작업을 진행할 수 있으며, 작업이 완료되면 해당 브랜치를 main 브랜치에 병합(merge)할 수 있습니다.

브랜치 명령어:

  • 브랜치 생성: git branch 브랜치명
  • 브랜치 전환: git checkout 브랜치명
  • 브랜치 병합: git merge 브랜치명

6. 푸시(Push)

로컬에서 작업한 변경 사항을 원격 레포지토리(GitHub)에 업로드하는 작업입니다. 즉, 로컬에서 커밋한 내용을 원격 레포지토리에 반영하는 과정입니다.

git push origin 브랜치명

7. 풀(Pull)

원격 레포지토리의 변경 사항을 로컬 레포지토리로 가져오는 작업입니다. 이를 통해 협업 중인 다른 개발자가 작업한 내용을 로컬 환경에 적용할 수 있습니다.

git pull origin 브랜치명
 

8. 포크(Fork)

포크는 다른 사람의 레포지토리를 자신의 GitHub 계정으로 복제하는 과정입니다. 포크는 원본 프로젝트에 영향을 주지 않고, 자신의 계정에서 독립적으로 작업할 수 있게 해줍니다. 오픈소스 프로젝트에 기여하고자 할 때 자주 사용됩니다.

9. 풀 리퀘스트(Pull Request)

풀 리퀘스트는 자신의 브랜치에서 작업한 내용을 원본 레포지토리에 병합해 달라고 요청하는 과정입니다. 오픈소스 프로젝트에서 개발자들이 코드 리뷰를 요청하거나, 팀 프로젝트에서 팀원 간의 코드 변경 사항을 병합하기 위해 사용합니다.

풀 리퀘스트의 과정:

  1. 포크 또는 클론 후 작업: 원본 레포지토리에서 포크하거나 클론한 후, 로컬에서 작업을 진행합니다.
  2. 변경 사항 커밋 및 푸시: 작업 내용을 로컬에서 커밋하고, 이를 원격 레포지토리로 푸시합니다.
  3. 풀 리퀘스트 생성: GitHub에서 풀 리퀘스트를 생성하여 프로젝트의 메인 브랜치에 자신의 변경 사항을 병합해 달라고 요청합니다.
  4. 리뷰 및 병합: 풀 리퀘스트가 생성되면 다른 팀원이 이를 리뷰하고, 병합할지 결정합니다.

10. 이슈(Issue)

이슈는 프로젝트와 관련된 버그, 개선 요청, 질문 등을 관리하는 도구입니다. 개발자들은 이슈를 통해 문제를 추적하고 해결책을 논의할 수 있습니다. 이슈는 프로젝트 협업에 중요한 역할을 하며, 프로젝트의 작업 흐름을 명확하게 정의할 수 있게 도와줍니다.

11. 액션(Actions)

GitHub Actions는 CI/CD(지속적 통합 및 배포) 파이프라인을 자동화하는 도구입니다. 개발자는 GitHub Actions를 이용해 코드를 푸시할 때마다 자동으로 테스트, 빌드, 배포 등의 작업을 수행할 수 있습니다. 이를 통해 개발 프로세스를 더 효율적으로 관리할 수 있습니다.

12. GitHub의 협업

GitHub는 개발자가 협력하고 프로젝트를 효율적으로 관리할 수 있도록 여러 협업 도구를 제공합니다.

  • Collaborator: 프로젝트의 소스 코드에 직접적으로 접근할 수 있는 권한을 가진 사람입니다.
  • Code Review: 풀 리퀘스트를 통해 다른 팀원이 작성한 코드를 검토하고 피드백을 제공할 수 있습니다.
  • 프로젝트 보드: 칸반 보드와 유사한 형태로, 프로젝트의 진행 상황을 시각적으로 관리할 수 있는 도구입니다.

13. 오픈 소스 기여

GitHub는 오픈소스 프로젝트가 많이 호스팅되어 있어, 누구나 자유롭게 포크하고, 변경 사항을 풀 리퀘스트로 기여할 수 있습니다. 오픈소스 프로젝트는 GitHub에서 개발자 커뮤니티와 협력하여 지속적으로 발전할 수 있습니다.