ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git : 기초
    BootCamp/FastCampus x Upstage AI Lab 6기 2024. 12. 16. 20:57

    Git 및 GitHub 소개

    • Git: 분산형 버전 관리 시스템으로, Linus Torvalds가 Linux 커널 관리를 위해 개발하였다.
    • GitHub: Git을 기반으로 한 원격 저장소 서비스로, 협업 및 코드 관리를 용이하게 해준다.

    Shell 및 Vim 명령어

    • Shell: 운영체제의 커널과 사용자를 연결하는 소프트웨어이다.

    주요 쉘 종류:

    • sh (Bourne Shell): UNIX 쉘의 기본 형태이다.
    • csh: 버클리에서 개발된 UNIX 쉘이다.
    • bash (Bourne Again Shell): 가장 널리 사용되는 UNIX 쉘이다.
    • zsh: 다양한 기능을 제공하는 UNIX 쉘이다.
    • Vim: Bill Joy의 vi 확장판으로, CLI 기반의 텍스트 편집기이다.

    모드:

    • Normal mode: 기본 모드로 모든 키가 명령으로 동작한다.
    • Insert mode: 텍스트 입력 및 수정 모드이다.
    • Visual mode: 블록 설정 모드이다.
    • Command-line mode: 패턴 검색, 필터, 줄 이동 등의 액션을 수행하는 모드이다.

    Vim의 특징:

    • 오픈 소스: 무료로 사용할 수 있는 텍스트 편집기이다.
    • 모드 기반: 다양한 모드를 통해 효율적인 텍스트 편집이 가능하다.
    • 확장 기능: vundle, vim-plug 등의 확장 기능 설치 관리자를 제공한다.

    주요 명령어:

    • Normal mode:
      • h, j, k, l: 방향키 역할을 한다.
      • i: Insert mode로 전환한다.
      • v: Visual mode로 전환한다.
      • ESC: Normal mode로 돌아간다.
    • Command-line mode:
      • :q: 종료한다.
      • :w: 저장한다.
      • :wq: 저장 후 종료한다.

    Git 기본 개념

    • Git의 정의: 분산형 버전 관리 시스템으로, 여러 사용자가 동시에 작업할 수 있도록 지원한다.

    주요 특징:

    • 단순한 구조: 사용이 간편하고 빠른 속도를 자랑한다.
    • 비선형적 개발: 수천 개의 브랜치를 지원하여 다양한 개발 방식이 가능하다.
    • 동시 작업 가능: 소스코드 주고받기 없이 여러 사용자가 동시에 작업할 수 있다.
    • 커밋 관리: 수정 내용을 커밋 단위로 관리하여 원하는 시점으로 체크아웃할 수 있다.
    • 브랜치 개발: 새로운 기능 추가는 브랜치로 개발하여 실험이 가능하다.

    Git GUI 클라이언트

    • GUI 클라이언트: Git을 보다 쉽게 사용할 수 있도록 도와주는 그래픽 사용자 인터페이스이다.

    주요 클라이언트:

    • Git GUI: 공식 Git GUI 클라이언트이다.
    • GitHub Desktop: GitHub에서 제공하는 클라이언트이다.
    • Sourcetree: Atlassian에서 제공하는 클라이언트이다.
    • GitKraken: 직관적인 인터페이스를 제공하는 클라이언트이다.
    • CLI의 중요성: CLI(Command Line Interface)는 Git을 배우는 데 더 유용하며, GUI 사용 시 도구에 대한 적응이 필요하다.

    Git 내부 구조

    • Blob: 파일 하나의 내용에 대한 정보이다.
    • Tree: Blob이나 subtree의 메타데이터(디렉토리 위치, 속성, 이름 등)를 포함한다.
    • Commit: 커밋 순간의 스냅샷을 나타낸다.
    • Git의 작동 원리: Git은 객체를 기반으로 하여 버전 관리를 수행하며, 각 객체는 고유한 해시값을 가진다.

    로컬 및 원격 저장소

    • 로컬 저장소: 사용자의 컴퓨터에 저장된 Git 저장소이다.
    • 원격 저장소: GitHub와 같은 서버에 저장된 저장소로, 협업 시 사용된다.
    • 작업 흐름:
      • git add: 변경된 파일을 스테이징 영역에 추가한다.
      • git commit: 스테이징된 파일을 커밋하여 로컬 저장소에 저장한다.
      • git push: 로컬 저장소의 변경 사항을 원격 저장소에 반영한다.
      • git pull: 원격 저장소의 변경 사항을 로컬 저장소로 가져온다.

    Git 설정 및 시작하기

    • 설정 명령어:
      • $ git config --global user.name "{username}": 사용자 이름 설정
      • $ git config --global user.email "{emailaddr}": 사용자 이메일 설정
      • $ git config --global core.editor "vim": 기본 편집기 설정
    • 시작하기:
      • 저장소 클론: $ git clone {username/repo-addr} 명령어로 원격 저장소를 클론한다.
      • 디렉토리 이동: $ cd {repo-addr} 명령어로 클론한 저장소로 이동한다.
      • 상태 확인: $ git status 명령어로 현재 상태를 확인한다.

    커밋 메시지 규칙

    • Conventional Commits: 커밋 메시지를 일관되게 작성하기 위한 규칙이다.
    • 형식:
      • {type}: {description}: 작업 단위 축약
      • {body}: 작업 상세 기술
      • {footer}: 부가정보
    • 타입 예시:
      • feat: 기능 개발 관련
      • fix: 오류 개선 혹은 버그 패치
      • docs: 문서화 작업
      • test: 테스트 관련

    브랜치 및 병합 전략

    • 브랜치 모델:
      • git flow: 전통적이고 많이 사용되는 모델로, 각 단계가 명확히 구분된다.
      • github flow: 브랜치 모델의 단순화로, CI 의존성이 높다.
      • gitlab flow: 배포 및 이슈에 대응하기 쉬운 모델이다.
    • 브랜치 작업:
      • 브랜치 생성: $ git branch {branch name} 명령어로 새로운 브랜치를 생성한다.
      • 브랜치 전환: $ git switch {branch name} 명령어로 브랜치를 전환한다.
      • 병합: $ git merge {branch name} 명령어로 브랜치를 병합한다.

    GitHub 프로젝트 관리

    • 이슈 관리: GitHub에서 프로젝트의 다양한 이슈를 관리하기 위한 기능이다.
    • 이슈 템플릿: 기능, 질문, 버그 리포트에 대한 양식을 지정할 수 있다.
    • 라벨: 이슈의 상태와 종류, 긴급도를 표시하기 위해 사용된다.
    • 마일스톤: 작성된 이슈가 프로젝트의 어떤 주기에서 해결되어야 하는지를 표기한다.
    • 프로젝트 관리: GitHub에서 repo issue 기반의 작업 관리를 지원한다.
Designed by Tistory.