Git/Github 정리

개발세발·2023년 11월 8일

Git

  • 분산버전관리 시스템
  • 코드를 관리하고 협업하기 위해 사용
  • 소스코드 관리에 주로 사용.

Github

  • Git으로 관리되는 소스코드를 저장하고 공유하는 저장소

오픈소스 라이센스

  • 소프트웨어를 공개하고 수정, 배포, 사용을 허용하는 조건을 정의하는 규약.
  • 소스코드의 공개 여부, 제한, 상업적 이용 가능 여부 등을 명시

Git의 주요 기능

  • 분산 버전 관리
  • 변경 사항 추적
  • 브랜치
  • 원격 저장소 지원
  • 이력 관리
  • 병합 및 충돌 해결
  • 태그

Git의 Repository

  • Git으로 관리되는 프로젝트 저장소
  • 프로젝트의 모든 파일, 폴더 버전 정보, 이력 등을 저장
  • Local Repository, Remote Repository
    Local에서 직접 작업하는 컴퓨터에 있는 저장소,
    협업을 위해서는 Local에 있는 작업물을 Remote Repository에 공유해야 함.

Branch

  • 코드 변경 사항을 병렬적으로 개발할 수 있는 기능
  • 새로운 브랜치를 생성하여 기존 소스 코드와는 별개로 작업을 진행.
  • 각 브랜치는 서로 영향을 주지 않아, 동시 작업 시 충돌을 방지

Git 명령어

git init

  • Git 저장소를 초기화하고 새로운 로컬 저장소를 생성
  • .git이라는 디렉토리 생성

git status

  • git 저장소의 상태 확인

  • 현재 작업 중인 파일의 변경 사항이나 커밋되지 않은 변경 내역 확인

  • Working tree status

  • Staging area status

git add

  • 파일을 stage 영역에 추가
  • -A: 작업 디렉토리 전체의 변경된 파일 추가

git commit

  • 변경 내용을 저장하고 커밋
  • 변경된 내용에 대한 스냅샷을 생성하고 스냅샷에 대한 메세지를 작성
  • -m: 커밋 메시지를 작성하는 옵션
  • 로컬 저장소에만 저장됨

git push

  • 로컬에서 변경된 내용을 원격 저장소에 업로드
  • git push <원격 저장소명> <local_branchname>:<remote_branchname>

git pull

  • 원격 저장소의 내용을 로컬 저장소로 가지고 옴.
  • 다른 사람이 변경한 내용을 로컬로 가지고 올 때 사용
  • git pull <원격 저장소명> <_branchname>

git clone

  • 원격 저장소를 로컬에 복제
  • 아예 다른 없는 프로젝트를 가져올 때 사용
  • git clone <원격저장소 url> <local_name>

git log

  • Git 저장소의 커밋 히스토리 확인
  • 가장 최근 것부터 역순으로 출력
  • git lon -n: 최근 n개의 커밋 히스토리를 역순으로 출력

git reset

  • 이전 커밋 상태로 되돌리기
  • git reset HEAD: 가장 최근에 스테이징한 변경 내역을 언스테이징
  • git reset HEAD file
  • git reset --soft <commit_>: 지정한 커밋으로 돌아가며, 변경 사항 유지
  • git reset --hard <commit_>: 지정한 커밋으로 돌아가며, 변경 사항 삭제

git stash

  • 변경 사항을 스택에 임시로 저장
  • git stash pop을 통해 저장된 변경 사항을 다시 적용
  • git stash list: list 스택에 저장된 목록 확인
  • git stash drop: 가장 최근에 저장된 stash 삭제

git diff

  • 마지막 커밋과의 변경 내용을 비교

git branch

  • 현재 저장소의 모든 브랜치 출력
  • -r: 원격 브랜치만 표시
  • -a: 모든 브랜치를 표시
  • --list: 브랜치 이름만 출력
  • -v: 브랜치 이름과 마지막 커밋 메시지 출력
  • -d <branch_name>: 브랜치 삭제

git check out

  • 브랜치를 전환, 이동하거나, 커밋을 확인하기 위해 작업 디렉토리를 변경하는 명령어
  • branchname으로 지정한 브랜치로 작업 디렉토리를 전환
  • -b <branch_name>: 새로운 브랜치를 생성하고 새로 생성된 브랜치로 전환
  • git checkout [-b] <branch_name>
  • git checkout <commit_hash>: 커밋 확인

Git Branch

  • 코드 관리가 효율적
  • 작업의 독립성 보장: 개발 속도 향상
  • 안정성
  • 코드 리뷰 및 품질 관리: 코드 품질 향상
  • 배포 및 롤백의 용이성

Feature Branch

  • 각 기능별 독립적인 브랜치를 생성하여 작업
  • 서로의 영역에 영향을 주지 않음.
  • 해당 기능을 설명하는 명칭을 사용
  • 새로운 feature 브랜치에서 작업을 진행하고, 필요한 경우 여러 개의 커밋 생성
  • 기준 브랜치로 병합하기 전에 원격 저장소에 feature 브랜치를 push
    git push origin feature/new-feature

Github Flow

  • 규모가 작거나 중간 크기의 프로젝트에 적합
  • 빠른 개발 주기와 지속적인 배포에 초점
  • 기준 브랜치에서 새로운 브랜치 생성
  • 기준 브랜치는 항상 배포 가능한 상태
  • 작업 진행 후 커밋
  • PullRequest: 작업한 내용을 검토를 부탁함. 다른 커뮤니티 사용자들에게 리뷰를 요청
  • 이후 기준 브랜치로 병합

Git flow

  • 대규모 프로젝트에 적합함.
  • Master: 안정적인 코드가 저장되는 브랜치, 메인
  • Develop: 개발 중인 코드 관리를 위한 브랜치
  • Feature: 새로운 기능 개발을 위한 브랜치(Develop 브랜치로부터 분기)
  • Release: 새로운 버전 릴리스를 준비하는 브랜치(Develop 브랜치로부터 분기)
  • Hotfix: 긴급한 버그 수정을 위한 브랜치(Master 브랜치로부터 분기)

0개의 댓글