코딩 일지

협업을 위한 Git & GitHub 공부 / 명령어 정리본 본문

개발 공부

협업을 위한 Git & GitHub 공부 / 명령어 정리본

9unaaa 2025. 2. 9. 17:36

버전관리 시스템

파일 변화(버전)를 시간에 따라 기록했다가 나중에 특정 시점이 버전을 다시 꺼내올 수 있는 시스템 ex) CVS, Git, Subversion…

  1. CVCS(중앙 집중식 버전 관리)
    • ex) CVS, Subversion
    • 파일을 관리하는 서버가 별도로 존재
    • 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)
    • 단점: 중앙 서버에 문제가 발생하면 협업, 백업 불가능
  2. DVCS(분산 버전 관리 시스템)
    • ex) Git, Mecurial
    • 저장소를 히스토리와 더불어 전부 복제 → 서버에 문제가 생기면 이 복제물로 다시 작업을 시작

Git

모든 파일 집합의 변경 사항의 추적을 위한 소프트웨어

  • 일반적으로 소프트웨어 개발 중에 소스 코드를 공동으로 개발하는 프로그래머 간의 작업을 조정하는 데 사용

Git의 기초 개념

  • 모든 명령을 로컬에서 진행
  • 모든 변화를 파일의 스냅샷으로 취급
  • 데이터를 추가할 뿐 삭제나 변경하지 않음

Git의 세가지 상태

Git Bash 명령어

  1. git init
    • 디렉토리 → Working DIrectory로 만들기
    • .git이라는 하위 디렉토리 생성
  2. git status
    • 상태를 확인
  3. git add 파일명
    • git으로 관리할 파일을 추가함
      • Untracked → Staged
  4. git commit 파일명
    • Modified → Stage
    • 커밋과 커밋 메시지를 한번에
      • git commit 파일명 -m “커밋메시지”
  5. git log
    • 커밋 내역 확인
  6. 비교
    1. git diff
      • 최근 커밋 vs Working Directory 비교
    2. git diff — staged
      • 최근 커밋 vs Stage 비교

GitHub와 연동하기

  • Git Hub : Git 저장소의 온라인 저장 사이트

GitHub Repository를 원격 저장소로 추가하기

  1. 토큰 지정 안함: git remote add origin [GitHub 주소]
  2. 토큰을 지정 : git remote add origin https://[토큰]@github.com/[닉네임]/[repository].git

Local Repository → GitHub Repository 푸시하기

  • 원격 저장소 지정 - clone 원격지의 소스코드를 받아 Local로 동기화하는 Clone
    • git clone [GitHub 주소]
  • local repository의 변경사항을 깃허브로 올리는 Push
    • git push origin [master/main]
  • Checkout : 마지막 커밋으로 되돌아 가는 기능

GitHub Repository에서 내려받기

  • 깃허브의 소스코드를 받아오기
    • git pull origin [master/main]

Git용 Tool 사용하기

  • Sourcetree : GUI를 사용하여 Git을 편리하게 사용함

Commit

  • 커밋 주의 사항
    1. 반드시 한 번에 하나의 논리적 작업만을 커밋합니다
    2. 커밋 메시지를 잘 작어야함 - 꼼꼼히 작성

Git 심화

변경 사항 되돌리기

Git의 3가지 트리

Branch

마음대로 작업할 수 있는 별도의 공간

  • 기본은 master 브랜치
  • 기존의 master 브랜치 내용은 그대로 보존하면서 새로운 작업을 추가하는 것
  • 각 사용자별/모듈별 브랜치를 만들어 작업하고 통합하는 것이 좋음
  • 머지(merge) : 브랜치 합치기
  • 재배치(rebase) : 커밋 이력 정리

풀 리퀘스트

원격 저장소에 소유자가 아닌 사람이 변경사항을 추가하도록 요청하는 경우

  • 순서
    1. 저장소를 본인 계정으로 포크하기
    2. 포크한 저장소 클론하기
    3. 브랜치 생성 후 브랜치에서 작업
    4. 작업 브랜치 푸시하기
    5. 풀리퀘스트 보내기

팀프로젝트에서 각자의 담당 모듈을 개발, GitHub를 통해 하나의 소스코드로 통합 하는법?

  1. Fork-Full Request
    • 기본 Repository를 생성
    • 개발자들이 각자의 Repository로 Fork
    • 개발 후, 기본 Repository로 Full Request하여 반영
  2. Collaborator로 협업
    • 기본 Repository를 생성
    • 각 개발자들을 Collaborator로 추가하여 작업

CI/CD

소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 하는 지속적 통합(CI) 및 지속적 제공/배포(CD)를 의미

  • 지속적 통합(Continuous Integration)
    • 코드 변경 사항을 공유 소스 코드 리포지토리에 자동으로 자주 통합하는 방식
  • 지속적 제공 또는 배포(Continuous Delivery/Deployment)
    • 코드 변경 사항의 통합, 테스트, 제공을 나타내는 프로세스로 지속적 제공과 배포, 두 가지 의미

  • 개발 이후 빌드, 테스트, 릴리즈, 배포 과정에 자동화 도구를 활용하여 애플리케이션 배포 주기를 단축하여 서비스 요구에 신속하게 대응하도록 지원함