- Git 버전 관리 시스템.

리문·2022년 4월 18일
0

버전 관리 시스템 (Version Control System)

1. 버전 관리 시스템 : 파일의 변화를 기록하여 추후에 변화를 불러 올 수 있도록 하는 것.

2. 버전 관리 시스템의 종류

1)로컬

  • 내 컴퓨터에서만 버전 관리.

2)중앙집중형

  • 서버에서만 버전 관리.

3)분산형(Git)

  • 내 컴퓨터와 서버 모두에서 버전 관리.
  • 모든 변화의 히스토리를 각 개인이 들고있음.

3.Git의 특징

  • 델타기반 : 다른 여타 VCS는 각 파일의 변화를 시간 순으로 정한다.
  • 스냅샷 : 다른 버전 관리 시스템과 큰 차이점으로, Git은 스냅샷 방식으로 현재 파일의 유무 등을 기록함.
  • commited : 안전하게 저장되어있는 상태.
  • modified : 수정이 일어난 상태.
  • staged : commit을 하겠다고 한 상태.

명령어

로컬

  • git commit : commit을 새로 만듬.

  • git branch : branch를 만듬.
    ※ branch : 특정 commit에 대한 참조.

    • -f : 브랜치를 강제로 옮기는 것.
  • git checkout : 특정 commit을 불러오는 것.

    • -b 브랜치를 만들고 체크아웃.
  • git merge : 서로 다른 두 개의 commit을 합쳐 새로운 commit을 생성.

  • git reset : 이전 commit으로 히스토리를 옮김.

  • git rebase : commit을 복사하여 다른 commit으로 이동.

  • -i : 인터랙티브 리베이스.

  • git cherry-pick : 원하는 commit을 복사하여 붙여 넣는 것.

    상대 참조
    HEAD : 현재 작업중인 버전

    • ^ : 특정 commit의 부모.
    • 2 : 두번째 부모.
    • ~ : 특정 commit으로 부터 어떠한 수 만큼 떨어진 부모.
  • git tag : 특정 commit에다가 어떤 내용을 남기는 것

원격

  • git clone : 원격 저장소를 복제하는 것.

  • git fetch : 원격 저장소의 내용을 로컬로 가져 오는 것.

    • 로컬에 없는 commit을 다운로드
    • 원격 branch 업데이트 (원격 branch : 원격 저장소의 branch를 추적.)
  • git pull : git fetch + git merge.

  • git push : 로컬 저장소의 내용을 원격으로 보내는 것.

    • 원격에 없는 commit을 업로드.
    • 원격 branch를 업데이트.

git push가 되지 않는 경우.


위와같이 로컬의 C3 커밋은 원격 저장소의 C1 커밋을 부모로 하고 있고, 원격 저장소에서는
C2까지 갱신된 상태이기 때문에 push가 되지 않는다.

이를 push하기 위해서는 현재 로컬의 작업물을 rebase하거나 merge하여야한다.

위와 같이 git fetch로 C2를 로컬로 다운로드해주고, git rebase로 C3를 C2로 복사해준다.
이후 git push로 원격 저장소에 업로드해주면 완료된다.

혹은 merge를 이용하는 방법도 있다.


위와 같은 방법으로 push하기 위해서는 우선 git fetch로 C2를 로컬로 다운로드 해준다.
이후, git merge origin main으로 merge해준다면 push가 가능하게 된다.

profile
개발자되기 대작전

0개의 댓글