Git


Git

깃(Git)은 리누스 토르발즈에 의해 개발된 분산 버전관리 시스템 (Distributed Version Control Systems) 으로, 컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 파일에 대한 작업을 조율하는데 사용된다. 또한 깃허브(Github)는 깃을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스이다.

기본 명령어

  • git init : 깃 저장소를 초기화하여 현재 폴더에 깃 생성.
  • git add : 이전 커밋으로부터 변경된 내용을 staging 영역 에 추가
  • git commit : staging 영역에 올라와있는 변경사항을 변경하도록 확정.
  • git log : 커밋 내역 확인
  • git status : 현재 변경 내용 확인 등 상태 체크
  • git push : 커밋된 내용들을 로컬에서 서버 저장소로 업로드
  • git pull : 서버 저장소에서 변경된 내용들을 로컬로 다운로드
  • git clone : 서버 저장소에 있는 프로젝트 파일들을 모두 다운로드
  • 보통 파일 변경 → git add . → git commit -m “커밋할 내용” → git push origin main 의 순서로 깃허브 저장소에 변경된 파일을 올리게 된다.
  • git branch

  • 브랜치는 나뭇가지라는 뜻으로, 보통 main 브랜치가 있고 main 브랜치를 기준으로 뻗어나가는 여러 브랜치들이 존재한다.
  • 브랜치를 생성하기 위해서는 git branch 브랜치명 을 사용할 수 있다.
  • 특정 기능을 개발하려고 할 때, git branch 를 이용하여 브랜치를 생성하고, git switch 브랜치명 을 이용하여 해당 브랜치로 이동하여 개발을 진행한다.
  • 이후 해당 기능 개발이 마무리되면 다시 main 브랜치에 merge하여 branch를 합친다.
  • branch를 이용하면 이렇듯 다른 사람과 겹치지 않고 개발을 할 수 있다.
  • rebase라는 기능도 있다. rebase는 현재 브랜치가 분기한 지점을 변경한다.
  • 위 그림을 예시로 설명하면, B상태에서 branch를 생성하면 D로 분기하여 브랜치가 생성된다. 그런데 여기서 메인이 C상태가 되고, git rebase main을 실행하면 아래쪽 그림과 같이 변한다.
  • repository 옮기기 (mirror, bare)

    git clone --mirror {원래 repo 주소}
    cd {원래 repo 이름}
    git push --mirror {목적지 repo 주소}
  • —mirror 옵션과 —bare 옵션은 repository의 DB들을 복제하여 브랜치와 같은 것들도 복제해 넣어주지만 차이점이 있다.
  • —mirror는 pull request, remote update 정보들도 포함한다.
  • 그러나 —mirror로 복제하는 것이 에러가 날 경우 아래처럼 —bare를 사용할 수 있다.
  • git clone --bare {원래 repo 주소}
    cd {원래 repo 이름}
    git push --mirror {목적지 repo 주소}